1? 約束的作用
約束是作用于數據表中列上的規則,用于限制表中數據的類型。約束的存在保證了數據庫中數據的精確性和可靠性。約束有列級和表級之分,列級約束作用于單一的列,而表級約束作用于整張數據表。下面是 GaussDB SQL 中常用的約束。
- NOT NULL 約束:保證列中數據不能有 NULL 值
- DEFAULT 約束:提供該列數據未指定時所采用的默認值
- UNIQUE 約束:保證列中的所有數據各不相同
- 主鍵約束:唯一標識數據表中的行/記錄
- 外鍵約束:唯一標識其他表中的一條行/記錄
- CHECK 約束:此約束保證列中的所有值滿足某一條件
- 索引:用于在數據庫中快速創建或檢索數據
約束可以在創建表時規定(通過 CREATE TABLE 語句),或者在表創建之后規定(通過 ALTER TABLE 語句)。
2 創建約束
當使用CREATE TABLE語句創建表時,或者在使用ALTER TABLE語句創建表之后,可以指定約束。
語法
CREATE TABLE table_name
(column_name1 data_type size constraint_name,column_name2 data_type size constraint_name,column_name3 data_type size constraint_name,..............
);
3 刪除約束
任何現有約束都可以通過在 alter table 命令中指定 drop constraint 選項的方法刪除掉。
例如,要去除 employees 表中的主鍵約束,可以使用下述命令:?
alter table employees drop constraint employees_pk;
一些數據庫實現可能提供了刪除特定約束的快捷方法。
例如,要在gaussdb中刪除一張表的主鍵約束,可以使用如下命令:?
alter table employees drop primary key;
某些數據庫實現允許禁用約束。這樣與其從數據庫中永久刪除約束,你可以只是臨時禁用掉它,過一段時間后再重新啟用。
4 完整性約束
完整性約束用于保證關系型數據庫中數據的精確性和一致性。對于關系型數據庫來說,數據完整性由參照完整性(referential integrity,RI)來保證。有很多種約束可以起到參照完整性的作用,這些約束包括主鍵約束(Primary Key)、外鍵約束(Foreign Key)、唯一性約束(Unique Constraint)以及上面提到的其他約束。
5 批注
約束的種類有很多,通過約束我們可以讓進入數據庫的數據更加規范,雖然這樣做會很麻煩,有時候甚至還可能影響用戶體驗,但是還是建議盡量讓你的數據庫設計的更加規范,只有數據規范了,在之后的數據處理過程中或數據查詢分析過程中才會更加高效。本節主要介紹語法部分,下一節會著重介紹各個約束的使用方法。