約束是作用于數據表中列上的規則,用于限制表中數據的類型。約束的存在保證了數據庫中數據的精確性和可靠性。
約束有列級和表級之分,列級約束作用于單一的列,而表級約束作用于整張數據表。
下面是 SQL 中常用的約束,這些約束雖然已經在關系型數據庫管理系統一章中討論過了,但是仍然值得在這里回顧一遍。
約束可以在創建表時規定(通過 CREATE TABLE 語句),或者在表創建之后規定(通過 ALTER TABLE 語句)。
任何現有約束都可以通過在 ALTER TABLE 命令中指定 DROP CONSTRAINT 選項的方法刪除掉。
例如,要去除 EMPLOYEES 表中的主鍵約束,可以使用下述命令:
ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;
一些數據庫實現可能提供了刪除特定約束的快捷方法。例如,要在 Oracle 中刪除一張表的主鍵約束,可以使用如下命令:
ALTER TABLE EMPLOYEES DROP PRIMARY KEY;
某些數據庫實現允許禁用約束。這樣與其從數據庫中永久刪除約束,你可以只是臨時禁用掉它,過一段時間后再重新啟用。
完整性約束用于保證關系型數據庫中數據的精確性和一致性。對于關系型數據庫來說,數據完整性由參照完整性(referential integrity,RI)來保證。
有很多種約束可以起到參照完整性的作用,這些約束包括主鍵約束(Primary Key)、外鍵約束(Foreign Key)、唯一性約束(Unique Constraint)以及上面提到的其他約束。