一、六大約束條件
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 列級約束和表級約束的區別
|
位置 |
支持類型 |
能否起約束名 |
列級約束 |
列的後面 |
全都支持 |
只能給外鍵和檢查約束起名 |
表級約束 |
所有列的下面 |
不支持默認和非空 |
可以 |