開發、逆向工程、文檔生成時常需獲取表結構詳情。下面查詢輸出:表名、列序號、列名、是否標識列、是否主鍵、數據類型。
SELECT
表名 = CASE WHEN A.ColOrder = 1 THEN D.Name ELSE '' END,
字段序號 = A.ColOrder,
字段名 = A.Name,
標識 = CASE WHEN COLUMNPROPERTY(A.ID, A.Name, 'IsIdentity') = 1 THEN '√' ELSE '' END,
主鍵 = 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 = A.ID AND colid = A.ColId
)
)
) THEN '√' ELSE '' END,
類型 = B.Name
FROM syscolumns A
JOIN systypes B ON A.xtype = B.xusertype
JOIN sysobjects D ON A.ID = D.ID AND D.xtype = 'U'
ORDER BY D.Name, A.ColOrder;
syscolumns:列定義systypes:類型映射sysobjects:對象目錄COLUMNPROPERTY(id, name, 'IsIdentity'):判斷標識列sysindexes/sysindexkeys:索引/鍵信息SQL Server 2005+ 推薦使用 INFORMATION_SCHEMA.COLUMNS 視圖或 sys.columns/sys.tables 目錄視圖,兼容性更好。