码迷,mamicode.com
首页 > 数据库 > 详细

SqlServer查询出数据库中所有的表及其字段属性

时间:2018-05-18 13:48:29      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:nullable   数据   The   precision   数据库   sys   返回   cas   server   

代码如下所示:

/*********************************
SqlServer查询出数据库中所有的表及其字段属性
*********************************/
SELECT  ( CASE WHEN a.colorder = 1 THEN d.name
               ELSE ‘‘
          END ) AS 表名 ,--如果表名相同就返回空  
        a.colorder AS 字段序号 ,
        a.name AS 字段名 ,
        ( CASE WHEN COLUMNPROPERTY(a.id, a.name, IsIdentity) = 1 THEN 
               ELSE ‘‘
          END ) AS 标识 ,
        ( 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 ) AS 主键 ,--查询主键END  
        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 字段说明
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 a.id ,
        a.colorder;

 

查询结果如下图所示:

技术分享图片

SqlServer查询出数据库中所有的表及其字段属性

标签:nullable   数据   The   precision   数据库   sys   返回   cas   server   

原文地址:https://www.cnblogs.com/qubernet/p/9055508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!