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

SQL Server 系統表查詢:一鍵取得資料表完整結構定義資訊

     編輯:關於SqlServer

前言

開發與維護階段常需快速掌握資料表結構:欄位名稱、資料類型、長度、精度、主鍵、識別欄、預設值、說明等。本文提供一支查詢系統目錄視圖的 T-SQL 腳本,一次輸出資料表所有欄位的完整定義資訊,適合納入 DBA 工具箱或文件產生器。

查詢腳本

SELECT
    表名 = CASE WHEN a.colorder = 1 THEN d.name ELSE '' END,
    表說明 = CASE WHEN a.colorder = 1 THEN ISNULL(f.value, '') 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,
    佔用位元組 = a.length,
    長度 = 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
LEFT JOIN sysproperties f ON d.id = f.id AND f.smallid = 0
-- WHERE d.name = 'YourTableName'  -- 指定表名時啟用
ORDER BY a.id, a.colorder;

欄位說明

輸出欄位來源/邏輯
表名/表說明sysobjects + sysproperties (smallid=0),僅首列顯示避免重複
識別欄COLUMNPROPERTY(..., 'IsIdentity')
主鍵透過 sysobjects(PK) → sysindexes → sysindexkeys 關聯判斷
類型/長度/精度/小數位systypes + COLUMNPROPERTY(PRECISION/Scale)
預設值syscomments (透過 cdefault 關聯)
欄位說明sysproperties (extended properties, smallid=colid)

使用建議

  • 移除註解 WHERE d.name = '表名' 可查詢特定表。
  • SQL Server 2005+ 建議改用 sys.columns, sys.tables, sys.extended_properties 等新目錄視圖,語法更標準。
  • 搭配動態 SQL 或 PowerShell 可批次產出全資料庫資料字典文件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved