如何得到数据库中所有表名 表字段及字段中文描述


  本文标签:数据库,表名

在网上查了部分资料但是发现粘上去的代码都存在问题,无奈只好自己修改了一下,代码如下:

如下代码能正常运行,都是网上查找资料最后拼凑总结出来的 。条件就自己加吧 。网上好像也有不少类型的东西,这里留着以备不时只需!
复制代码 代码如下:

SELECT
(case when a.colorder=1 then d.name else end) N表名,
a.colorder N字段序号,
a.name N字段名,
(case when COLUMNPROPERTY( a.id,a.name,IsIdentity)=1 then √else end) N标识,
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in
(SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name))))))) AND
(xtype = PK))>0 then √ else end) N主键,
b.name N类型,
a.length N占用字节数,
COLUMNPROPERTY(a.id,a.name,PRECISION) as N长度,
isnull(COLUMNPROPERTY(a.id,a.name,Scale),0) as N小数位数,
(case when a.isnullable=1 then √else end) N允许空,
isnull(e.text,) N默认值,
isnull(g.[value],) AS N字段说明
--into ##tx
FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype=U and d.name<>dtproperties
left join syscomments e
on a.cdefault=e.id
left join sys.extended_properties g
on a.id=g.major_id AND a.colid = g.minor_id
order by object_name(a.id),a.colorder


sysproperties表的详解:

1、表名:sqlserver的注释表,每个数据库都有,包括表和字段的注释,表或者列的注释都会存储,没有注释不存储 。
2、字段:
id:表的ID或者是列的ID
smallid:列的顺序,排序用
type:3 表,4字段,可能还有约束什么的,还没有测试出
name:统一的MS_Description
value:描述

如需修改(转载部分)

如果需要更新 此表的 内容 需要 开启 [允许对系统目录直接进行修改] ,否则 改不了 系统表

如果 不开启 此 功能 ,那么也可以 使用 存储过程[sp_addextendedproperty] 来 添加\更新\删除 表和字段的描述 用法如下

--创建表
Create Table 表(a1 varchar(10),a2 char(2))

--为表 添加 描述信息 : 第二个参数为 [描述] 第六个参数为 [表名]
EXECUTE sp_addextendedproperty NMS_Description, 人员信息表, Nuser, Ndbo, Ntable, N表, NULL, NULL

--为表 更新 描述信息 : 第二个参数为 [描述] 第六个参数为 [表名]
EXECUTE sp_updateextendedproperty MS_Description,Nadsfasfdas, Nuser, Ndbo, Ntable, N表, NULL, NULL

--为表 删除 描述信息 : 第五个参数为 [表名]
EXEC sp_dropextendedproperty MS_Description,Nuser, Ndbo, Ntable, N表, NULL, NULL

--字段的 添加 更新 删除 方法
--为 字段a1 添加 描述信息: 第二个参数为 [描述] 第六个参数为 [表名] 第八个参数为 [字段名称]
EXECUTE sp_addextendedproperty NMS_Description, 姓名, Nuser, Ndbo, Ntable, N表, Ncolumn, Na1

--更新 字段 a1 的描述属性:第二个参数为 [描述] 第六个参数为 [表名] 第八个参数为 [字段名称]
EXEC sp_updateextendedproperty MS_Description,字段1dd,user,dbo,table,表,column,Na1

--删除 字段 a1 的描述属性:第五个参数为 [表名] 第七个参数为 [字段名称]
EXEC sp_dropextendedproperty MS_Description,user,dbo,table,表,column,a1

--删除测试
Drop Table 表