zoukankan      html  css  js  c++  java
  • 查询表结构

    方法一
    SELECT
       序号=C.column_id,
        列名=C.name,
        是否主键=ISNULL(IDX.PrimaryKey,N''),
        数据类型=T.name,
        长度=C.max_length,
        Precision=C.precision,
        小数位=C.scale,
        允许空=CASE WHEN C.is_nullable=1 THEN N'是'ELSE N'否' END,
        默认值=ISNULL(D.definition,N''),
        说明=ISNULL(PFD.[value],N'')
    FROM sys.columns C
        INNER JOIN sys.objects O
            ON C.[object_id]=O.[object_id]
                AND O.type='U'
                AND O.is_ms_shipped=0
        INNER JOIN sys.types T
            ON C.user_type_id=T.user_type_id
        LEFT JOIN sys.default_constraints D
            ON C.[object_id]=D.parent_object_id
                AND C.column_id=D.parent_column_id
                AND C.default_object_id=D.[object_id]
        LEFT JOIN sys.extended_properties PFD
            ON PFD.class=1
                AND C.[object_id]=PFD.major_id
                AND C.column_id=PFD.minor_id
        LEFT JOIN sys.extended_properties PTB
            ON PTB.class=1
                AND PTB.minor_id=0
                AND C.[object_id]=PTB.major_id
        LEFT JOIN                       -- 索引及主键信息
        (
            SELECT
                IDXC.[object_id],
                IDXC.column_id,
                Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')
                    WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
                PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'是'ELSE N'否' END,
                IndexName=IDX.Name
            FROM sys.indexes IDX
            INNER JOIN sys.index_columns IDXC
                ON IDX.[object_id]=IDXC.[object_id]
                    AND IDX.index_id=IDXC.index_id
            LEFT JOIN sys.key_constraints KC
                ON IDX.[object_id]=KC.[parent_object_id]
                    AND IDX.index_id=KC.unique_index_id
            INNER JOIN  -- 对于一个列包含多个索引的情况,只显示第1个索引信息
            (
                SELECT [object_id], Column_id, index_id=MIN(index_id)
                FROM sys.index_columns
                GROUP BY [object_id], Column_id
            ) IDXCUQ
                ON IDXC.[object_id]=IDXCUQ.[object_id]
                    AND IDXC.Column_id=IDXCUQ.Column_id
                    AND IDXC.index_id=IDXCUQ.index_id
        ) IDX
            ON C.[object_id]=IDX.[object_id]
                AND C.column_id=IDX.column_id
    WHERE C.object_id= object_id('dbo.CRM_商店')       -- 指定表
    ORDER BY O.name,C.column_id


    方法二
    SELECT S.name    ColumName
                          ,(
                           CASE
                            WHEN S.is_nullable=1 THEN N'是'
                            ELSE N'否' END
                          ) AS    AllowNULL
                          ,S.max_length  MaxLength
                          ,TYPESYSTABLE.name DateType
                        FROM sys.Columns S
                         INNER JOIN sys.types TYPESYSTABLE ON S.system_type_id = TYPESYSTABLE.system_type_id
                        WHERE S.object_id= object_id(@TableName)
       AND TYPESYSTABLE.name != 'sysname'
    方法三(优化方法一)

                        SELECT  S.column_id     序号
           ,S.name      列名称
           ,ISNULL(IDX.PrimaryKey,N'否') 主键
                          ,(
                           CASE
                            WHEN S.is_nullable=1 THEN N'是'
                            ELSE N'否'
                            END
                          ) AS      是否允许空
                          ,S.max_length    长度
                          ,TYPESYSTABLE.name   数据类型
                          ,S.scale     小数位
                          ,ISNULL(D.definition,N'') 默认值
                          ,ISNULL(PFD.[value],N'') 说明
                        FROM sys.Columns S
                         INNER JOIN sys.types TYPESYSTABLE ON S.system_type_id = TYPESYSTABLE.system_type_id
                         INNER JOIN sys.objects O ON S.[object_id]=O.[object_id]
                 AND O.type='U'
                 AND O.is_ms_shipped=0
          LEFT JOIN sys.default_constraints D ON S.[object_id]=D.parent_object_id
                 AND S.column_id=D.parent_column_id
                 AND S.default_object_id=D.[object_id]
          LEFT JOIN sys.extended_properties PFD ON PFD.class=1
                 AND S.[object_id]=PFD.major_id
                 AND S.column_id=PFD.minor_id
          LEFT JOIN                       -- 索引及主键信息
           (   SELECT
             IDXC.[object_id],
             IDXC.column_id,
             Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')
              WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
             PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'是'ELSE N'否' END,
             IndexName=IDX.Name
            FROM sys.indexes IDX
             INNER JOIN sys.index_columns IDXC ON IDX.[object_id]=IDXC.[object_id]
                      AND IDX.index_id=IDXC.index_id
             LEFT JOIN sys.key_constraints KC ON IDX.[object_id]=KC.[parent_object_id]
                      AND IDX.index_id=KC.unique_index_id
             INNER JOIN  -- 对于一个列包含多个索引的情况,只显示第1个索引信息
              ( 
               SELECT [object_id], Column_id, index_id=MIN(index_id)
               FROM sys.index_columns
               GROUP BY [object_id], Column_id
              ) IDXCUQ ON IDXC.[object_id]=IDXCUQ.[object_id]
               AND IDXC.Column_id=IDXCUQ.Column_id
               AND IDXC.index_id=IDXCUQ.index_id
            ) IDX ON S.[object_id]=IDX.[object_id]
              AND S.column_id=IDX.column_id
                        WHERE S.object_id= object_id('CRM_商店')
          AND TYPESYSTABLE.name != 'sysname'
         ORDER BY O.name, S.column_id
                       

  • 相关阅读:
    JMeter一台机器可以支持多大的并发量
    apache遇到的权限以及其他一些问题
    高级运维要学习的知识
    运维学习的博客网站
    bind的各个记录的详解
    gdb的安装与使用
    CentOS6.x机器安装Python2.7.x
    centos7搭建nginx+uwsgi运行django环境
    学会数据库读写分离、分表分库——用Mycat,这一篇就够了!我转的
    linux运维、架构之路-xtrabackup
  • 原文地址:https://www.cnblogs.com/renzhendewo/p/2169057.html
Copyright © 2011-2022 走看看