SQL六大約束

一、六大約束條件

 

1.1 not null非空約束

該字段的值不能爲空。

1.2 default默認值約束

如果插入數據時,該字段沒有賦值,則爲默認值。

 

1.3 primary key主鍵約束

該字段不能重複,且不能爲空。

比如學號。

一個表中只能有一個主鍵約束。

通過表級約束對兩個字段設置聯合主鍵:

1.4 unique唯一約束

該字段值不能重複,可以爲空,但只能有一個null值。

比如座位號。

一個表中可以有多個唯一約束。

 

1.5 check檢查約束

用於檢查字段值是否正確。

比如檢查年齡是否規範,性別是否不男不女。

 

1.6 foreign key外鍵約束

該字段的值必須要來自約束關聯的外表字段值。

比如學生成績表的學號必須來自學生信息表的學號字段。

注意 : 外鍵foreign( 從 ) 必須關聯references 其他表的某個字段( 主 )。

被關聯的主表字段必須時一個key ( 主鍵或者唯一 )。

插入數據時,必須先插主表,再插從表。

刪除數據時,先刪除從表,再刪除主表

 

1.7主鍵(primary key)和唯一(unique)約束的比較

 

唯一性

Nullable

一個表允許存在幾個約束

是否允許組合

主鍵

不允許

最多一個

允許,但是不推薦

唯一

允許

可以有多個

允許,但是不推薦

 

 

二、在定義字段時添加約束(列級約束)

 

①添加 主鍵約束

#語法 :

           字段名 字段類型 primary key,

        例如:

       empNo varchar2(50) primary key,

 

②添加默認約束和非空約束

#語法 :

           字段名 字段類型  default 默認值 not null,

       例如:

nation varchar2(20) default '漢族' not null,

注意:not null約束必須加在default末尾。

 

③添加唯一約束和非空約束

#語法 :

           字段名 字段類型 unique,

       例如:

       IDnumber varchar2(50) unique not null,

注意:not null約束必須加在unique末尾。

 

④添加外鍵約束

#語法 :

           字段名 字段類型 constraint 約束名

                               references 主表(關聯字段)

       例如:

       empDeptNo number(10) constraint FK_EMPINFO_EMPDEPTNO

                              references dept(deptno)

 

 

⑤添加檢查約束

#語法 :

           字段名 字段類型 constraint 約束名

                               check (檢查的內容)

        例如:

        empSex char(4) constraint CK_EMPINFO_EMPSEX

                       check(empSex = '男' or empSex = '女'),

 

 

三、在定義字段後添加約束

 

注意:非空和默認約束無法使用表級約束實現

推薦使用表級約束建表,將基本約束寫在字段之後,檢查和外鍵約束寫在之後。

5.7.3 列級約束和表級約束的區別

 

位置

支持類型

能否起約束名

列級約束

列的後面

全都支持

只能給外鍵和檢查約束起名

表級約束

所有列的下面

不支持默認和非空

可以

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章