第五章 欄位約束
初識約束
約束是資料庫用來確保資料滿足業務規則的手段,對資料做的條件限制,
約束的型別
1. 主鍵約束(PRIMARY KEY)
2. 唯一性約束(UNIQUE)
3. 非空約束(NOT NULL)
4. 檢查約束(CHECK)
5. 外鍵約束(FOREIGN KEY)
主鍵約束(PRIMARY KEY)
1. 非空加唯一約束;
2. 一個表只有一個主鍵;
3. 主鍵會默認加索引;
student_id number primary key
alter table student add constraint stu_id_pk primary key(stu_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);
洗掉約束
alter table table_name drop constraint constraint_name;
非空約束(NOT NULL)
非空約束作用的列也叫強制列,顧名思義,強制鍵列中必須有值,當然建表時候若使用default關鍵字指定了默認值,則可不輸入,
score_name varchar2(32) not null
alter table table_name modify student_name not null;
檢查約束(CHECK)
檢查約束可用來實施一些簡單的規則,比如列值必須在某個范圍內,檢查的規則必須是一個結果為true或false 的運算式
student_sex varchar2(1) check(student_sex in('男','女')),
alter table student add constraint stu_sex_ck check(stu_sex in('男','女'));
score_value number check(score_value between 0 and 100)
alter table student add constraint stu_age_ck check(stu_age between 1 and 100);
外鍵約束(FOREIGN KEY)
外鍵約束定義在具有父子關系的子表中,外鍵約束使得子表中的列對應父表的主鍵列,用以維護資料庫的完整性,不過出于性能和后期的業務系統的擴展的考慮,很多時候,外鍵約束僅出現在資料庫的設計中,實際會放在業務程式中進行處理,外鍵約束注意以下幾點:
- 外鍵約束的子表中的列和對應父表中的列資料型別必須相同,列名可以不同
- 對應的父表列必須存在主鍵約束(PRIMARY KEY)或唯一約束(UNIQUE)
- 外鍵約束在子表里,外鍵的取值范圍不能大于父表鍵值
- 如果想洗掉主表的主鍵,需要先洗掉子表的關聯欄位
student_num number references table_name(student_num)
alter table student add constraint tea_id_fk foreign key(tea_id) references teacher (tea_id);
注意:
不過在真正的企業開發中,除了主鍵約束這類具有強需求的約束,像外鍵約束,檢查約束更多時候僅僅出現在資料庫設計階段,真實環境卻很少應用,更多是放到程式邏輯中去進行處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/14941.html
標籤:Oracle
上一篇:Oracle索引和事務
下一篇:plsql專案案例
