视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何得到数据库中所有表名表字段及字段中文描述
2020-11-09 07:10:48 责编:小采
文档

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

如下代码能正常运行,都是网上查找资料最后拼凑总结出来的。条件就自己加吧。网上好像也有不少类型的东西,这里留着以备不时只需!
代码如下:
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 N'MS_Description', '人员信息表', N'user', N'dbo', N'table', N'表', NULL, NULL

--为表 更新 描述信息 : 第二个参数为 [描述] 第六个参数为 [表名]
EXECUTE sp_updateextendedproperty 'MS_Description',N'adsfasfdas', N'user', N'dbo', N'table', N'表', NULL, NULL

--为表 删除 描述信息 : 第五个参数为 [表名]
EXEC sp_dropextendedproperty 'MS_Description',N'user', N'dbo', N'table', N'表', NULL, NULL

--字段的 添加 更新 删除 方法
--为 字段a1 添加 描述信息: 第二个参数为 [描述] 第六个参数为 [表名] 第八个参数为 [字段名称]
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'

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

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

--删除测试
Drop Table 表

下载本文
显示全文
专题