SQL 約束

2022-05-20 16:26 更新

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

SQL 約束


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

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

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

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

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


SQL創(chuàng)建約束


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

 語(yǔ)法

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

SQL CREATE TABLE + CONSTRAINT 語(yǔ)法

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)有約束都可以通過(guò)在 ALTER TABLE 命令中指定 DROP CONSTRAINT 選項(xiàng)的方法刪除掉。

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

ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

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

ALTER TABLE EMPLOYEES DROP PRIMARY KEY;

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


完整性約束


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

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)