一、開(kāi)發(fā)中使用完整性約束
1.非空約束
2.唯一約束
3.主鍵約束
4.檢查約束
5.主外鍵約束
6.潛在約束(數(shù)據(jù)類(lèi)型的檢查)
形式:
CONSTRAINT pk_mid_name PRIMARY KEY (mid,name) ,
CONSTRAINT uk_email UNIQUE (email) ,
CONSTRAINT ck_sex CHECK (sex IN ('男','女'))
注意:
oracle中的約束也屬于數(shù)據(jù)庫(kù)中的一種對(duì)象。
在oracle中為了方便的進(jìn)行約束維護(hù),把所有的約束都作為一個(gè)一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象進(jìn)行保存,這些信息都存放在數(shù)據(jù)庫(kù)字典中,每個(gè)約束都有一個(gè)自己的名字,這樣便于維護(hù)。方式為系統(tǒng)分配和用戶(hù)自定義(constraint關(guān)鍵字,約定為約束簡(jiǎn)寫(xiě)_字段)兩種。
二、級(jí)聯(lián)刪除
下面介紹難懂的主外鍵約束(父子表關(guān)系)
如果父表沒(méi)有,子表數(shù)據(jù)插入不進(jìn)去。刪除父表數(shù)據(jù),得把子表響應(yīng)的數(shù)據(jù)全部刪除掉。
1.也可以使用強(qiáng)制刪除表(不能再直接使用purge選項(xiàng)了)
DROP TABLE member CASCADE CONSTRAINT ;
2.級(jí)聯(lián)刪除
創(chuàng)建表時(shí)候,增加級(jí)聯(lián)刪除 on delete cascade;
CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member(mid) ON DELETE CASCADE
3.級(jí)聯(lián)更新,創(chuàng)建表的時(shí)候,設(shè)置級(jí)聯(lián)更新
CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member(mid) ON DELETE SET NULL
三、查看約束
1.查看全部的約束名稱(chēng)、類(lèi)型、約束設(shè)置對(duì)應(yīng)的表名稱(chēng)
SELECT constraint_name,constraint_type,table_name FROM user_constraints ;
2.查詢(xún)emp表上的全部約束
SELECT constraint_name,constraint_type,table_name FROM user_constraints WHERE table_name='EMP' ;
3.查詢(xún)user_cons_columns數(shù)據(jù)字典
SELECT * FROM user_cons_columns ;
四、修改約束
1.為member表的mid字段增加主鍵約束
ALTER TABLE member ADD CONSTRAINT pk_mid PRIMARY KEY(mid) ;
2.為member表的age增加檢查約束
ALTER TABLE member ADD CONSTRAINT ck_age CHECK(age BETWEEN 0 AND 200) ;
2.非空約束
ALTER TABLE member MODIFY (name VARCHAR2(30) NOT NULL) ;
3.禁用約束
ALTER TABLE advice DISABLE CONSTRAINT pk_adid ;
4.重啟約束
ALTER TABLE member ENABLE CONSTRAINT pk_mid ;
5.刪除約束(無(wú)關(guān)聯(lián)外鍵)
ALTER TABLE advice DROP CONSTRAINT pk_adid ;
6.刪除member表之中的“pk_mid”約束 (有關(guān)聯(lián)外鍵)
ALTER TABLE member DROP CONSTRAINT pk_mid CASCADE ;
五、總結(jié)
自律才能自由!