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

查詢 SQL Server 系統表掌握資料庫結構:取得所有資料表與欄位資訊

     編輯:關於SqlServer

核心系統表與檢視

  • SYSCATALOG (或 sysobjects):列出資料庫中所有資料表與檢視表。重要欄位:creator (建立者)、name (物件名稱)、type (U=使用者資料表, V=檢視表)。
  • SYSCOLUMNS (或 syscolumns):記錄所有資料表的欄位定義。可依資料表名稱篩選取得完整欄位清單。

實用查詢範例

1. 列出所有使用者資料表

SELECT name FROM sysobjects WHERE xtype = 'U' ORDER BY name

2. 取得指定資料表的所有欄位詳細資訊

SELECT 
    c.name AS 欄位名稱,
    t.name AS 資料型別,
    c.length AS 長度,
    COLUMNPROPERTY(c.id, c.name, 'PRECISION') AS 精確度,
    COLUMNPROPERTY(c.id, c.name, 'Scale') AS 小數位數,
    CASE WHEN c.isnullable = 1 THEN 'Y' ELSE 'N' END AS 允許NULL,
    CASE WHEN COLUMNPROPERTY(c.id, c.name, 'IsIdentity') = 1 THEN 'Y' ELSE 'N' END AS 身分欄位,
    ISNULL(ep.value, '') AS 欄位說明
FROM syscolumns c
INNER JOIN systypes t ON c.xtype = t.xusertype
LEFT JOIN sys.extended_properties ep ON ep.major_id = c.id AND ep.minor_id = c.colid AND ep.name = 'MS_Description'
WHERE c.id = OBJECT_ID('您的資料表名稱')
ORDER BY c.colorder

3. 判斷主鍵欄位

SELECT c.name
FROM syscolumns c
WHERE c.id = OBJECT_ID('您的資料表名稱')
  AND c.colid IN (
      SELECT colid FROM sysindexkeys
      WHERE id = c.id AND indid IN (
          SELECT indid FROM sysindexes
          WHERE id = c.id AND name IN (
              SELECT name FROM sysobjects WHERE xtype = 'PK' AND parent_obj = c.id
          )
      )
  )

進階應用:產生完整資料字典

結合 sysobjects、syscolumns、systypes、syscomments (預設值)、sysproperties (擴充屬性/說明) 可一次查詢輸出所有資料表的完整結構定義,並匯出至 Excel 供文件化管理。

其他有用系統表

  • sysindexes:索引資訊
  • sysindexkeys:索引鍵值欄位
  • syscomments:預設值、檢查條件、預存程序原始碼
  • sys.extended_properties:自訂說明文字 (SQL Server 2000+)

所有系統表均可透過 SELECT * FROM sys.sysobjects WHERE xtype = 'S' 列出。

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