約束[結構化查詢語言]

約束[結構化查詢語言]

約束有纏縛,束縛,按照約定(特定)條件限制,管束等意思。約束的作用是添加、刪除。

基本信息

約束類型

主鍵約束(Primary Key constraint):要求主鍵列數據唯一,並且不允許為空。

唯一約束(Unique constraint):要求該列唯一,允許為空,但只能出現一個空值。

檢查約束(Check constraint):某列取值範圍限制,格式限制等,如有關年齡、信箱(必須有@)的約束。

默認約束(Default constraint):某列的默認值,如在資料庫里有一項數據很多重複,可以設為默認值。

外鍵約束(Foreign Key constraint):用於在兩個表之間建立關係,需要指定引用主表的哪一列。

添加

語法:

ALTER TABLE 表名

ADD CONSTRAINT 約束名 約束 類型 具體的約束說明

上述語法表示修改某個表,添加某個約束。其中,約束名的命名規則推薦採用“ 約束類型_約束欄位”這樣的形式。

示例:

添加主鍵約束(將stuNo設為主鍵):

ALTER TABLE stuInfo

ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)

添加唯一約束(身份證號唯一):

ALTER TABLE stuInfo

ADD CONSTRAINT UQ_stuID UNIQUE (stuID)

添加默認約束(如果地址不填,默認為“地址不詳”):

ALTER TABLE stuInfo

ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不詳') FOR stuAddress

添加檢查約束(要求年齡只能在 15~40歲之間)

ALTER TABLE stuInfo

ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)

添加外鍵約束(主表 stuInfo 和從表 stuGrade 建立關係,關聯欄位為 stuNo ):

ALTER TABLE stuGrade

ADD CONSTRAINT FK_stuNo

FOREIGN KEY (stuNo) REFERENCES stuInfo(stuNo)

GO

刪除

語法

ALTER TABLE 表名

DROP CONSTRAINT 約束名

示例:

刪除stuInfo表中地址默認約束的語句:

ALTER TABLE stuInfo

DROP CONSTRAINT DF_stuAddress

刪除外鍵約束注意事項:

對於存在外鍵約束的表,如果進行刪除非空的外鍵,可能會出現錯誤。

a. 如果在 FOREIGN KEY 約束的列中輸入非 NULL 值,則此值必須在被引用的列中存在,否則將返回違反外鍵約束的錯誤信息。

b. FOREIGN KEY 約束套用於前面所講的列,除非指定了源列。

c. FOREIGN KEY 約束僅能引用位於同一伺服器上的同一資料庫中的表。資料庫間的引用完整性必須通過觸發器實現。有關更多信息,請參見 CREATE TRIGGER。

d. FOREIGN KEY 可以引用同一表中的其它列(自引用)。

e. 列級 FOREIGN KEY 約束的 REFERENCES 子句僅能列出一個引用列,且該列必須與定義約束的列具有相同的數據類型。

f. 表級 FOREIGN KEY 約束的 REFERENCES 子句中引用列的數目必須與約束列列表中的列數相同。每個引用列的數據類型也必須與列表中相應列的數據類型相同。

e. 如果 timestamp 類型的列是外鍵或被引用鍵的一部分,則不能指定 CASCADE。

g. 可以在相互間具有引用關係的表上組合使用 CASCADE 和 NO ACTION。如果 SQL Server 遇到 NO ACTION,將終止執行語句並回滾相關的 CASCADE 操作。當 DELETE 語句導致 CASCADE 和 NO ACTION 組合操作時,在 SQL Server 檢查 NO ACTION 操作之前將執行所有 CASCADE 操作。

h. 一個表最多可包含 253 個 FOREIGN KEY 約束。

i. 對於臨時表不強制 FOREIGN KEY 約束。

j. 每個表在其 FOREIGN KEY 約束中最多可以引用 253 個不同的表。

k. FOREIGN KEY 約束只能引用被引用表的 PRIMARY KEY 或 UNIQUE 約束中的列或被引用表上 UNIQUE INDEX 中的列。

INSERT 和 UPDATE 規範類別

展開以顯示有關該關係的“刪除規則”和“更新規則”的信息。

刪除規則

指定當資料庫的最終用戶嘗試刪除某一行,而該行包含外鍵關係所涉及的數據時所發生的情況。如果設定為:

a. 無操作 顯示一條錯誤信息,告知用戶不允許執行該刪除操作,DELETE 將被回滾。

b. 級聯 刪除包含外鍵關係中所涉及的數據的所有行。

c. 設定空 如果表的所有外鍵列都可接受空值,則將該值設定為空。僅適用於 SQL Server 2005。

d. 設定默認值 如果表的所有外鍵列均已定義默認值,則將該值設定為列定義的默認值。僅適用於 SQL Server 2005。

更新規則

指定當資料庫的用戶嘗試更新某一行,而該行包含外鍵關係所涉及的數據時所發生的情況。如果設定為:

a. 無操作 顯示一條錯誤信息,告知用戶不允許執行該刪除操作,DELETE 將被回滾。

b. 級聯 刪除包含外鍵關係中所涉及的數據的所有行。

c. 設定空 如果表的所有外鍵列都可接受空值,則將該值設定為空。僅適用於 SQL Server 2005。

e. 設定默認值 如果表的所有外鍵列均已定義默認值,則將該值設定為列定義的默認值。僅適用於 SQL Server 2005。

相關詞條

相關搜尋

熱門詞條

聯絡我們