標籤:
oracle之完整性條件約束
資料庫中的完整性條件約束有:
1.主鍵約束(Primary)
2.唯一約束(unique)
3.檢查約束(check)
4.非空約束(not null) --屬於檢查約束
5.外鍵約束(foreign key)
首先先建一個學生表:
create table t_student_con( f_id int, f_name varchar2(30), f_sex char(2), f_age int, f_birth date default sysdate);
--添加一個欄位alter table t_student_conadd f_email varchar2(30);
1、主鍵約束:添加了主鍵約束的欄位不能為null,且會自動添加唯一約束。
--添加一個主鍵約束alter table t_student_conadd constraint pk_std_id primary key (f_id);
2、唯一約束:添加了唯一約束的欄位的值是唯一的,不能有重複。
--添加一個唯一約束alter table t_student_con add constraint uq_std_name unique(f_name);
3、檢查約束:可以自訂資料的完整性,保證欄位的資料不存在約束條件之外的資料。
--添加檢查約束alter table t_student_con add constraint ck_std_sex check(f_sex=‘M‘ or f_sex=‘F‘)
4、非空約束:有非空約束的欄位,值不可為空或者插入null值。
--非空約束是檢查約束的一種,這種添加方法不是很常用alter table t_student_conadd constraint nnull_std_email check( f_email is not null);
--我們一般會以修改表欄位的方法來添加非空約束alter table t_student_con modify(f_email varchar2(30) not null);
5、外鍵約束:若表之間存在聯絡,則建立外鍵約束可保證資料的完整性和規範性。
首先建立一個考試資訊表:
create table t_student_exam( e_id int,--主鍵 e_subject varchar2(30),--科目 e_score number(5,2),--分數 f_id int--學員資訊的外鍵);
下面為該表添加主鍵和外鍵:
--添加主鍵alter table t_student_exam add constraint pk_exam_id primary key(e_id);--添加外鍵alter table t_student_exam add constraint fk_exam_student_id foreign key (f_id)references t_student_con(f_id)on delete cascade; --在刪除學生資訊的時候,串聯刪除從表的成績資訊
注意:添加了外鍵約束的表,若主表有對應的從表記錄,需在添加外鍵約束時加上 on delete cascade 關鍵字,才可直接刪除,此關鍵字表示串聯刪除。否則不能直接刪除。
6、約束的刪除
文法:alter table t_student_exam drop constraint 約束名;
--刪除約束alter table t_student_exam drop constraint fk_exam_student_id;
注意!我們可以用以上方法建立表的完整性條件約束,同時,我們也可以在建表時就建立約束。如下
create or replace table t_student_con( f_id int primary key, f_name varchar2(30), f_sex char(2) check(f_sex=‘M‘ OR f_sex=‘F‘),--1、檢查性約束 f_age int, f_birth date default sysdate, constraint ck_std_age check(f_age>=1 and f_age<=60)--2、檢查性約束);
create table t_student_exam( e_id int,--主鍵 e_subject varchar2(30),--科目 e_score number(5,2),--分數 f_id int REFERENCES T_STUDENT_CON(F_ID) ON DELETE CASCADE--學員資訊的外鍵約束);
oracle之完整性條件約束