生成sql server數據庫字典

執行下面sql語句,然後導出結果到Excel,可以當做是數據庫字典

 SELECT sysobjects.NAME                                                    AS
       表名稱,
       --------------as 的作用:爲字段起一個別名
       --sysproperties.[value] AS 表說明 , ----------[ ]方括號的作用:爲了避免和關鍵字衝突
       syscolumns.NAME                                                    AS
       字段名稱,
       --properties.[value] AS 字段說明 ,
       systypes.NAME                                                      AS
       字段類型,
       syscolumns.length                                                  AS
       字段長度,
       Isnull(Columnproperty(syscolumns.id, syscolumns.NAME, 'Scale'), 0) AS
       小數位數,
       --isnull---(待測數據,返回值).當待測數據爲空時返回返回值,當大策數據爲非null時,反回待測數據
       CASE
         WHEN syscolumns.isnullable = 0 THEN ''
         ELSE ' √ '
       END                                                                AS
       是否爲空,
       CASE
         WHEN syscomments.text IS NULL THEN ''
         ELSE syscomments.text
       END                                                                AS
       缺省值,
       CASE
         WHEN Columnproperty(syscolumns.id, syscolumns.NAME, 'IsIdentity') = 1
       THEN
         ' √ '
         ELSE ''
       END                                                                AS
       遞增字段,
       CASE
         WHEN sysindexes.NAME IS NULL THEN ''
         ELSE sysindexes.NAME
       END                                                                AS
       索引名稱,
       CASE
         WHEN sysindexkeys.keyno IS NULL THEN ''
         ELSE CONVERT(VARCHAR(10), sysindexkeys.keyno)
       END                                                                AS
       索引位置,
       CASE
         WHEN sysindexes.indid = 1 THEN ' 聚集索引 '
         WHEN sysindexes.indid > 1
              AND sysindexes.indid <> 255 THEN ' 非聚集索引 '
         WHEN sysindexes.indid IS NULL THEN ''
         ELSE ' 其他 '
       END                                                                AS
       索引類型,
       CASE
         WHEN EXISTS (SELECT 1
                      FROM   sysobjects
                      WHERE  xtype = 'PK'
                             AND NAME IN (SELECT NAME
                                          FROM   sysindexes
                                          WHERE  indid IN
                                         (SELECT indid
                                          FROM   sysindexkeys
                                          WHERE  id = syscolumns.id
                                                 AND colid =
                                         syscolumns.colid))) THEN
         ' √ '
         ELSE ''
       END                                                                AS
       主鍵,
       CASE
         WHEN sysforeignkeys.constid IS NULL THEN ''
         ELSE ' √ '
       END                                                                AS
       外健
FROM   syscolumns -- 數據表字段
       INNER JOIN sysobjects -- 數據對象
               ON sysobjects.id = syscolumns.id
       INNER JOIN systypes -- 數據類型
               ON syscolumns.xtype = systypes.xtype
       LEFT OUTER JOIN syscomments -- 註釋信息
                    ON syscolumns.cdefault = syscomments.id
       LEFT OUTER JOIN sysindexkeys -- 索引中的鍵或列的信息
                    ON sysindexkeys.id = syscolumns.id
                       AND sysindexkeys.colid = syscolumns.colid
       LEFT OUTER JOIN sysindexes -- 數據庫 索引表
                    ON sysindexes.id = sysindexkeys.id
                       AND sysindexes.indid = sysindexkeys.indid
       LEFT OUTER JOIN sysforeignkeys
                    ON sysforeignkeys.fkeyid = syscolumns.id
                       AND sysforeignkeys.fkey = syscolumns.colid
WHERE  ( sysobjects.xtype = 'U' )
ORDER  BY sysobjects.id,
          syscolumns.colid  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章