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

Posted qubernet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlServer查询出数据库中所有的表及其字段属性相关的知识,希望对你有一定的参考价值。

代码如下所示:

/*********************************
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查询出数据库中所有的表及其字段属性的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中如何查询所有表及其所使用的表空间

sql查询所有包含中文的数据?

sql 查所有表中是不是有某个值

SqlServer表结构查询

我知道字段内容,并不知道字段名,如何在数据库中快速找到或查询出所在的表?SQL SERVER 2000。

在线等!!如何通过主表及其主键查询到与之关联的表及关联字段?数据库为db2