SQL 语句获取表字段名称,属性.

来源:互联网 发布:sql从大到小排序 编辑:程序博客网 时间:2024/05/16 11:44

--获取表字段名称,属性
SELECT
    表名      
= case when a.colorder=1 then d.name else '' end,
    表说明    
= case when a.colorder=1 then isnull(f.value,'') else '' end,
    字段序号  
= a.colorder,
    字段名    
= a.name,
    标识      
= case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end,
    主键      
= case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
                    
SELECT name FROM sysindexes WHERE indid in(SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '' else '' end,
    类型      
= b.name,
    占用字节数
= a.length,
    长度      
= COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    小数位数  
= isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
    允许空    
= case when a.isnullable=1 then ''else '' end,
    默认值    
= isnull(e.text,''),
    字段说明  
= isnull(g.[value],'')
FROM
    syscolumns a
left join
    systypes b
on
    a.xusertype
=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
    sysproperties g
on
    a.id
=g.id and a.colid=g.smallid 
left join
    sysproperties f
on
    d.id
=f.id and f.smallid=0
where
    d.name
='要查询的表'    --如果只查询指定表,加上此条件
order by
    a.id,a.colorder

 

 

--获取库中所有表字段的定义(包括名字,属性等)
--1. SqlServer数据库字典--表结构.sql

SELECT TOP 100 PERCENT --a.id,

CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,

CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表说明,

a.colorder
AS 字段序号, a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id,

a.name,
'IsIdentity') = 1 THEN '' ELSE '' END AS 标识,

CASE WHEN EXISTS

(
SELECT 1

FROM dbo.sysindexes si INNER JOIN

dbo.sysindexkeys sik
ON si.id = sik.id AND si.indid = sik.indid INNER JOIN

dbo.syscolumns sc
ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN

dbo.sysobjects so
ON so.name = so.name AND so.xtype = 'PK'

WHERE sc.id = a.id AND sc.colid = a.colid) THEN '' ELSE '' END AS 主键,

b.name
AS 类型, a.length AS 长度, COLUMNPROPERTY(a.id, a.name, 'PRECISION')

AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数,

CASE WHEN a.isnullable = 1 THEN '' ELSE '' END AS 允许空, ISNULL(e.text, '')

AS 默认值, ISNULL(g.[value], '') AS 字段说明, d.crdate AS 创建时间,

CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改时间

FROM dbo.syscolumns a LEFT OUTER JOIN

dbo.systypes b
ON a.xtype = b.xusertype INNER JOIN

dbo.sysobjects d
ON a.id = d.id AND d.xtype = 'U' AND

d.status
>= 0 LEFT OUTER JOIN

dbo.syscomments e
ON a.cdefault = e.id LEFT OUTER JOIN

dbo.sysproperties g
ON a.id = g.id AND a.colid = g.smallid LEFT OUTER JOIN

dbo.sysproperties f
ON d.id = f.id AND f.smallid = 0

ORDER BY d.name, a.colorder

原创粉丝点击