SQL 約束

2022-05-20 16:26 更新

 SQL約束用于指定表中數(shù)據(jù)的規(guī)則。

SQL 約束


 約束是作用于數(shù)據(jù)表中列上的規(guī)則,用于限制表中數(shù)據(jù)的類型。約束的存在保證了數(shù)據(jù)庫中數(shù)據(jù)的精確性和可靠性。

 約束有列級和表級之分,列級約束作用于單一的列,而表級約束作用于整張數(shù)據(jù)表。

 下面是 SQL 中常用的約束,這些約束雖然已經(jīng)在關(guān)系型數(shù)據(jù)庫管理系統(tǒng)一章中討論過了,但是仍然值得在這里回顧一遍。

  • NOT NULL 約束:保證列中數(shù)據(jù)不能有 NULL 值
  • DEFAULT 約束:提供該列數(shù)據(jù)未指定時所采用的默認(rèn)值
  • UNIQUE 約束:保證列中的所有數(shù)據(jù)各不相同
  • 主鍵約束:唯一標(biāo)識數(shù)據(jù)表中的行/記錄
  • 外鍵約束:唯一標(biāo)識其他表中的一條行/記錄
  • CHECK 約束:此約束保證列中的所有值滿足某一條件
  • 索引:用于在數(shù)據(jù)庫中快速創(chuàng)建或檢索數(shù)據(jù)

 約束可以在創(chuàng)建表時規(guī)定(通過 CREATE TABLE 語句),或者在表創(chuàng)建之后規(guī)定(通過 ALTER TABLE 語句)。


SQL創(chuàng)建約束


 當(dāng)使用CREATE TABLE語句創(chuàng)建表時,或者在使用ALTER TABLE語句創(chuàng)建表之后,可以指定約束。

 語法

CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ....
);

SQL CREATE TABLE + CONSTRAINT 語法

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,                
....                
);      

刪除約束


 任何現(xiàn)有約束都可以通過在 ALTER TABLE 命令中指定 DROP CONSTRAINT 選項的方法刪除掉。

 例如,要去除 EMPLOYEES 表中的主鍵約束,可以使用下述命令:

ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

 一些數(shù)據(jù)庫實現(xiàn)可能提供了刪除特定約束的快捷方法。例如,要在 Oracle 中刪除一張表的主鍵約束,可以使用如下命令:

ALTER TABLE EMPLOYEES DROP PRIMARY KEY;

 某些數(shù)據(jù)庫實現(xiàn)允許禁用約束。這樣與其從數(shù)據(jù)庫中永久刪除約束,你可以只是臨時禁用掉它,過一段時間后再重新啟用。


完整性約束


 完整性約束用于保證關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)的精確性和一致性。對于關(guān)系型數(shù)據(jù)庫來說,數(shù)據(jù)完整性由參照完整性(referential integrity,RI)來保證。

 有很多種約束可以起到參照完整性的作用,這些約束包括主鍵約束(Primary Key)、外鍵約束(Foreign Key)、唯一性約束(Unique Constraint)以及上面提到的其他約束。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號