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

MS SQL 基礎教學:建立與使用約束完整指南 (主鍵/外鍵/唯一/檢查/預設約束語法與最佳實踐)

     編輯:關於SqlServer

約束是宣告式資料完整性核心。SQL Server 提供五種:1) 主鍵約束 (PRIMARY KEY):唯一識別列,每表一個,不可 NULL,CLUSTERED|NONCLUSTERED 選擇索引類型,最多 16 欄位;2) 外鍵約束 (FOREIGN KEY):定義表間關聯,參考主鍵/唯一鍵,支援 ON UPDATE/DELETE CASCADE/SET NULL/NO ACTION,最多 16 欄位;3) 唯一約束 (UNIQUE):確保欄位組合唯一,允許單一 NULL,底層建立唯一索引;4) 檢查約束 (CHECK):布林運算式限制欄位值域;5) 預設約束 (DEFAULT):插入時未指定欄位自動填入預設值。本文提供完整 CONSTRAINT 語法、命名慣例、複合鍵定義、ON DELETE CASCADE 級聯刪除範例、Enterprise Manager 圖形化建立步驟。

五大約束語法速查

約束核心語法關鍵特性
PRIMARY KEYCONSTRAINT pk_name PRIMARY KEY [CLUSTERED|NONCLUSTERED] (col1, col2...)唯一+非空,每表一個,預設叢集
FOREIGN KEYCONSTRAINT fk_name FOREIGN KEY (col1...) REFERENCES ref_table (ref_col1...) [ON UPDATE|DELETE CASCADE|SET NULL|NO ACTION]參考完整性,級聯動作
UNIQUECONSTRAINT uq_name UNIQUE [CLUSTERED|NONCLUSTERED] (col1...)唯一,允許單一 NULL
CHECKCONSTRAINT ck_name CHECK (logical_expression)值域限制,可跨欄位
DEFAULTCONSTRAINT df_name DEFAULT constant_expression FOR column插入時自動填入

主鍵約束範例

CREATE TABLE products (
  p_id char(8) NOT NULL,
  p_name char(10) NOT NULL,
  price money DEFAULT 0.01,
  quantity smallint NULL,
  CONSTRAINT pk_p_id PRIMARY KEY (p_id, p_name)
) ON [PRIMARY];

外鍵級聯刪除範例

ALTER TABLE OrderDetails ADD CONSTRAINT fk_od_order
FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)
ON DELETE CASCADE; -- 刪除訂單自動刪除明細

約束建立介面

命名慣例建議

  • PK_TableName, FK_ChildTable_ParentTable, UQ_TableName_Columns, CK_TableName_Rule, DF_TableName_Column。
  • 明確命名便於腳本化、版控、錯誤訊息識別。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved