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

SQL Server 查詢表結構指令:sp_help 與 sp_columns 詳細用法

     編輯:關於SqlServer

問題背景

MySQL/Oracle 習慣用 DESC table_name,但在 SQL Server 執行 DESC Student 會報錯:「'DESC' 附近有語法錯誤」。

方法一:sp_help (推薦,資訊最完整)

EXEC sp_help 'Student';
-- 或
sp_help Student;

輸出結果包含 (多個結果集)

  1. 物件基本資訊:名稱、擁有者、建立日期、類型
  2. 欄位定義:名稱、型別、長度、精度、小數位、允許 NULL、預設值、Identity
  3. 身分識別欄位:種子、遞增、非複寫
  4. 索引資訊:名稱、類型 (叢集/非叢集)、唯一性、欄位、填滿因子
  5. 約束資訊:PK、FK、CHECK、DEFAULT、名稱、欄位、啟用狀態
  6. 參考此表的 FK:子表名、FK 名、父欄位、子欄位、更新/刪除規則
  7. 擴充屬性:MS_Description 等說明文字

方法二:sp_columns (專注欄位定義)

EXEC sp_columns 'Student';
-- 或
sp_columns Student;

輸出欄位

欄位名說明
COLUMN_NAME欄位名稱
TYPE_NAME資料類型名稱
PRECISION精度
LENGTH長度 (bytes)
SCALE小數位數
NULLABLE是否允許 NULL (1=是, 0=否)
COLUMN_DEF預設值定義
IS_AUTOINCREMENT是否 Identity

現代替代:目錄檢視查詢 (可程式化、可篩選)

-- 完整欄位定義
SELECT 
    c.name AS ColumnName,
    t.name AS DataType,
    c.max_length,
    c.precision,
    c.scale,
    c.is_nullable,
    c.is_identity,
    c.column_id,
    dc.definition AS DefaultConstraint
FROM sys.columns c
JOIN sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN sys.default_constraints dc ON c.default_object_id = dc.object_id
WHERE c.object_id = OBJECT_ID('dbo.Student')
ORDER BY c.column_id;

-- 索引資訊
SELECT 
    i.name AS IndexName,
    i.type_desc,
    i.is_unique,
    i.is_primary_key,
    STRING_AGG(c.name, ', ') WITHIN GROUP (ORDER BY ic.key_ordinal) AS Columns
FROM sys.indexes i
JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
WHERE i.object_id = OBJECT_ID('dbo.Student')
GROUP BY i.name, i.type_desc, i.is_unique, i.is_primary_key;

比較建議

方法優點缺點適用場景
sp_help資訊最完整、一鍵取得所有中繼資料多結果集、難以程式化處理人工查看、快速了解表結構
sp_columns專注欄位、輸出單一結果集無索引/約束資訊需程式化處理欄位定義
目錄檢視完全可控、可篩選、可 JOIN、效能最好需撰寫查詢工具開發、自動化腳本、詳細分析
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved