首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

單一 SQL 產生 SQL Server 資料字典:欄位、型別、主鍵、說明一次查齊

     編輯:關於SqlServer

一條 SQL 即可產出核心資料字典,包含表名、欄位名、型別、長度、小數位、允許空、預設值、說明、身分識別、主鍵標記。

SELECT
  表名 = CASE WHEN a.colorder = 1 THEN d.name ELSE '' END,
  字段名 = a.name,
  類型 = b.name,
  長度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION'),
  小數位數 = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0),
  允許空 = CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END,
  預設值 = ISNULL(e.text, ''),
  字段說明 = ISNULL(g.[value], '')
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 sysproperties g ON a.id = g.id
  AND a.colid = g.smallid
ORDER BY a.id, a.colorder

欄位說明

輸出欄位來源/邏輯
表名首欄位時顯示 sysobjects.name
字段名syscolumns.name
類型systypes.name
長度COLUMNPROPERTY(..., 'PRECISION')
小數位數COLUMNPROPERTY(..., 'Scale')
允許空syscolumns.isnullable
預設值syscomments.text (透過 cdefault 關聯)
字段說明sysproperties.value (MS_Description)

擴充建議

  • 加入身分識別:CASE WHEN COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 THEN '√' END
  • 加入主鍵判斷:關聯 sysindexes/sysindexkeys/sysobjects(xtype='PK')
  • 加入表說明:關聯 sysproperties smallid=0
  • SQL Server 2005+ 建議改查 INFORMATION_SCHEMA.COLUMNS 與 sys.extended_properties

此查詢相容 SQL Server 2000/2005/2008,可直接在查詢分析器執行並匯出 Excel 作為資料字典文件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved