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

SQL Server 資料庫技術(四十五):五大約束類型完整語法與範例解析

     編輯:關於SqlServer

約束概述

約束是 SQL Server 自動維護資料完整性的機制,限制可輸入表或單一欄位的資料。五種約束:主鍵、外鍵、唯一、檢查、預設。

7.2.1 主鍵約束

指定一或多欄值唯一識別每列。每表僅一個主鍵,IMAGE/TEXT 型別不可為主鍵,不允許 NULL。語法:CONSTRAINT constraint_name PRIMARY KEY [CLUSTERED|NONCLUSTERED] (column_name1[,...])。範例:以產品編號與名稱為複合主鍵。

7.2.2 外鍵約束

定義表間關聯,參考其他表主鍵。支援 ON DELETE/UPDATE CASCADE|NO ACTION、NOT FOR REPLICATION。語法:CONSTRAINT constraint_name FOREIGN KEY (col1[,...]) REFERENCES ref_table (ref_col1[,...]) [ON DELETE {CASCADE|NO ACTION}] [ON UPDATE {CASCADE|NO ACTION}] [NOT FOR REPLICATION]。範例:訂單表關聯產品表。臨時表不可指定外鍵。

7.2.3 唯一約束

確保一或多欄值唯一,允許 NULL。主鍵欄不可再設唯一約束。最多 16 欄。語法:CONSTRAINT constraint_name UNIQUE [CLUSTERED|NONCLUSTERED] (col1[,...])。範例:員工身分證字號唯一。

7.2.4 檢查約束

限制輸入值符合邏輯條件。語法:CONSTRAINT constraint_name CHECK [NOT FOR REPLICATION] (logical_expression)。範例:訂購數量不得小於 10。計算欄僅支援檢查約束。

7.2.5 預設約束

指定欄位預設值。語法:CONSTRAINT constraint_name DEFAULT constant_expression [FOR column_name]。範例:constraint de_order_quantity default 100 for order_quantity。僅能在建表後 ADD,不可建表時定義。

7.2.6 欄位約束 vs 表約束

欄位約束屬於欄位定義一部分,僅作用於該欄;表約束屬於表定義一部分,可作用多欄。範例展示兩者差異。

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