使用SQL语句查询表及表字段类型说明

Posted £冷☆月№

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用SQL语句查询表及表字段类型说明相关的知识,希望对你有一定的参考价值。

今天突然遇到有人要数据库表及表字段说明,数据库表太多又不能一个个表去找,就想想SQL是否能直接查询出来。

经过查询资料,加上一些自己的一些调整写了一个sql语句,在此记录一下,以方便日后查找使用。

SELECT  ( CASE WHEN a.colorder = 1 THEN d.name
               ELSE ‘‘
          END ) N‘表名‘ ,
        ( CASE WHEN a.colorder = 1
               THEN ISNULL(( SELECT TOP 1 value FROM   sys.extended_properties WHERE  major_id = OBJECT_ID(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‘字段说明‘
FROM    sys.syscolumns a
        LEFT JOIN sys.systypes b ON a.xtype = b.xusertype
        INNER JOIN sys.sysobjects d ON a.id = d.id
                                       AND d.xtype = ‘U‘
                                       AND d.name <> ‘dtproperties‘
        LEFT JOIN sys.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; 

  

以上是关于使用SQL语句查询表及表字段类型说明的主要内容,如果未能解决你的问题,请参考以下文章

如何使用sql编写查询语句 用于查询学生的 各科成绩

如何使用SQL语句查询数据库及表的空间容量

[SSM+layui]汽车出租系统07_RBAC权限管理及表分析说明怎么设置权限联合主键sql语句分析distinct去重

用一条sql语句查询表中字段的所有首字母大写

SQL语句查询表结构

如何用SQL语句查询一个数据表所有字段的类型