初識約束
約束是資料庫用來確保資料滿足業務規則的手段,對資料做的條件限制。
約束的型別
主鍵約束(primary key)
唯一性約束(unique)
非空約束(not null)
外來鍵約束(foreign key)
檢查約束(check)
主鍵約束(primary key)
非空加唯一約束;
乙個表只有乙個主鍵;
主鍵會預設加索引;
student_id number primary key
alter table table_name add constraint student_id_pk primary key(student_id)
唯一性約束(unique)
對於unique約束來講,索引是必須的。如果不存在,就自動建立乙個(unique的唯一性本質上是通過索引來保證的)
unique允許null值,unique約束的列可存在多個null。這是因為,unique唯一性通過btree索引來實現,而btree索引中不包含null。當然,這也造成了在where語句中用null值進行過濾會造成全表掃瞄。
student_num number unique
alter table table_name add constraint student_code_uq unique(student_num);
非空約束(not null)
非空約束作用的列也叫強制列。顧名思義,強制鍵列中必須有值,當然建表時候若使用default關鍵字指定了預設值,則可不輸入。
score_name varchar2(32) not null
alter table table_name modify student_name not null;
外來鍵約束(foreign key)
外來鍵約束定義在具有父子關係的子表中,外來鍵約束使得子表中的列對應父表的主鍵列,用以維護資料庫的完整性。不過出於效能和後期的業務系統的擴充套件的考慮,很多時候,外來鍵約束僅出現在資料庫的設計中,實際會放在業務程式中進行處理。外來鍵約束注意以下幾點
1.外來鍵約束的子表中的列和對應父表中的列資料型別必須相同,列名可以不同
2.對應的父表列必須存在主鍵約束(primary key)或唯一約束(unique)
student_num number references table_name(student_num)
alter table table_name1 add constraint student_deptno_fk foreign key(student_num) references table_name2 (student_num);
檢查約束(check)
檢查約束可用來實施一些簡單的規則,比如列值必須在某個範圍內。檢查的規則必須是乙個結果為true或false 的表示式
student_*** varchar2(1) check(student_*** in('男','女')),
alter table table_name add constraint student_***_ck check(student_*** in('男','女'));
score_value number check(score_value between 0 and 100)
alter table table_name add constraint student_scoreval_ck check(score_value between 0 and 100);
注釋:
不過在真正的企業開發中,除了主鍵約束這類具有強需求的約束,像外來鍵約束,檢查約束更多時候僅僅出現在資料庫設計階段,真實環境卻很少應用,更多是放到程式邏輯中去進行處理。
Oracle欄位約束
1.約束是資料庫用來確保資料滿足業務規則的手段,對資料做的條件限制。2.約束的型別 1.主鍵約束 primary key 1.主鍵約束 primary key 1.非空加唯一約束 2.乙個表只有乙個主鍵 3.主鍵會預設加索引 2.唯一性約束 unique 2.唯一性約束 unique 對於uniqu...
Oracle欄位約束
約束的型別 1.主鍵約束 primary key 特點 1.非空加唯一約束 2.乙個表只有乙個主鍵 3.主鍵會預設加索引 create table teacher te id number primary key 2.唯一性約束 unique student num number unique 3....
mysql 字段約束
5.6 操作表的約束 80 5.6.1 mysql支援的完整性約束 81 5.6.2 設定非空約束 not null,nk 81 5.6.3 設定欄位的預設值 default 82 5.6.4 設定唯一約束 unique,uk 84 5.6.5 設定主鍵約束 primary key,pk 85 5....