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

SQL Server 元數據查詢:一條語句獲取表結構、主鍵、標識列、數據類型

     編輯:關於SqlServer

開發、逆向工程、文檔生成時常需獲取表結構詳情。下面查詢輸出:表名、列序號、列名、是否標識列、是否主鍵、數據類型。

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 目錄視圖,兼容性更好。

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