約束是對(duì)表執(zhí)行對(duì)數(shù)據(jù)的列的規(guī)則。這些用于限制哪些數(shù)據(jù)的類型可以進(jìn)入的表。這確保數(shù)據(jù)庫(kù)中的數(shù)據(jù)的準(zhǔn)確性和可靠性。
約束可能是列級(jí)或表級(jí)。列級(jí)約束僅應(yīng)用于一列,而表級(jí)別約束應(yīng)用于整個(gè)表。
下面是通常用于在SQL中的約束。這些限制已經(jīng)在討論SQL - RDBMS概念章節(jié)中,但它的值得我們?cè)谶@一點(diǎn)上加以修訂。
NOT NULL 約束: 確保列不能有NULL值。
DEFAULT約束: 提供未指定時(shí)為列的默認(rèn)值。
UNIQUE約束: 確保了在一列中的所有的值是不同(唯一)的。
PRIMARY Key(主鍵) : 唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每一行/記錄。
FOREIGN Key(外鍵): 唯一標(biāo)識(shí)任何其他數(shù)據(jù)庫(kù)表中的行/記錄。
CHECK約束: CHECK約束可以確保列中的所有值滿足一定的條件。
INDEX索引: 使用非常快速地創(chuàng)建和檢索數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
當(dāng)一個(gè)表是用CREATE TABLE語(yǔ)句創(chuàng)建,也可以使用ALTER TABLE語(yǔ)句創(chuàng)建表,即使創(chuàng)建約束后,約束也可以再次指定。
您所定義的任何約束可以使用帶有DROP CONSTRAINT選項(xiàng)的ALTER TABLE命令刪除。
例如,刪除EMPLOYEES表的主鍵約束,可以使用下面的命令:
ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;
一些實(shí)現(xiàn)中可提供用于刪除某些約束的快捷方式。例如,要在Oracle表中刪除主鍵約束,可以使用下面的命令:
ALTER TABLE EMPLOYEES DROP PRIMARY KEY;
一些實(shí)現(xiàn)中允許禁用約束。而不是從數(shù)據(jù)庫(kù)中永久刪除約束,您可能需要暫時(shí)禁用約束,以后再啟用它。
完整性約束用于確保在關(guān)系數(shù)據(jù)庫(kù)中的準(zhǔn)確性和一致性的數(shù)據(jù)。數(shù)據(jù)完整性是在關(guān)系數(shù)據(jù)庫(kù)中,通過(guò)參照完整性的概念進(jìn)行處理。
有許多類型的完整性約束,在參照完整性(RI)中發(fā)揮作用。這些限制包括主鍵,外鍵,唯一約束和上面提到的其他約束限制。