數(shù)據(jù)庫中的約束課件_第1頁
數(shù)據(jù)庫中的約束課件_第2頁
數(shù)據(jù)庫中的約束課件_第3頁
數(shù)據(jù)庫中的約束課件_第4頁
數(shù)據(jù)庫中的約束課件_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

十一.數(shù)據(jù)庫中的約束(Constraint)

目標(biāo)結(jié)束本節(jié)課后,應(yīng)當(dāng)能達(dá)到如下目標(biāo):描述什么是約束創(chuàng)建和維護(hù)約束什么是約束?約束定義了表級(jí)的強(qiáng)制規(guī)則.約束定義了數(shù)據(jù)的完整性,.在Oracle中,有下列的強(qiáng)制類型:NOTNULL非空約束UNIQUE唯一約束PRIMARYKEY主鍵約束FOREIGNKEY外鍵約束CHECK定義一般性約束約束可以為一個(gè)約束命名,Oracle服務(wù)器也可以自動(dòng)為約束命名.約束的創(chuàng)建:當(dāng)創(chuàng)建表時(shí)創(chuàng)建約束在表創(chuàng)建后仍然可以創(chuàng)建約束定義一個(gè)列級(jí)或者表級(jí)的約束.查看數(shù)據(jù)字典中的約束.定義一個(gè)約束CREATETABLE[schema.]table (column

datatype[DEFAULTexpr] [column_constraint], ... [table_constraint][,...]);CREATETABLEemp( empnoNUMBER(4), enameVARCHAR2(10), ... deptnoNUMBER(2)NOTNULL, CONSTRAINTemp_empno_pk PRIMARYKEY(EMPNO)); 定義一個(gè)約束列級(jí)約束

表級(jí)約束column[CONSTRAINTconstraint_name]constraint_type,column,...

[CONSTRAINTconstraint_name]constraint_type(column,...),唯一鍵值約束

DEPTDEPTNODNAME LOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON唯一鍵值約束

50 SALES DETROIT

60 BOSTON插入不允許

(DNAME-SALES

已經(jīng)存在)允許唯一鍵值約束在表級(jí)或者列級(jí)進(jìn)行定義SQL>CREATETABLEdept(2 deptno NUMBER(2),3 dname VARCHAR2(14),4 loc VARCHAR2(13),5 CONSTRAINTdept_dname_ukUNIQUE(dname));主鍵約束

DEPTDEPTNODNAME LOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON主鍵插入

20 MARKETING DALLAS

FINANCE NEWYORK不允許(DEPTNO

20已經(jīng)存在)不允許

(DEPTNO是空的)主鍵約束在表級(jí)或者列級(jí)進(jìn)行定義SQL>CREATETABLEdept(2 deptno NUMBER(2),3 dname VARCHAR2(14),4 loc VARCHAR2(13),5 CONSTRAINTdept_dname_ukUNIQUE(dname),6 CONSTRAINTdept_deptno_pkPRIMARYKEY(deptno));外鍵約束

DEPTDEPTNODNAME LOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCH DALLAS...主鍵

EMPEMPNO ENAME JOB ...COMMDEPTNO7839 KING PRESIDENT 107698 BLAKE MANAGER 30...外鍵

7571 FORD MANAGER ...200 97571 FORD MANAGER ...20020插入不允許

(DEPTNO

9在DEPT表中不存在)Allowed

外鍵約束要么在表級(jí)要么在列級(jí)做出定義SQL>CREATETABLEemp(2 empno NUMBER(4),3 ename VARCHAR2(10)NOTNULL,4 job VARCHAR2(9),5 mgr NUMBER(4),6 hiredate DATE,7 sal NUMBER(7,2),8 comm NUMBER(7,2),9 deptno NUMBER(7,2)NOTNULL,10 CONSTRAINTemp_deptno_fkFOREIGNKEY(deptno)11 REFERENCESdept(deptno));外鍵約束關(guān)鍵字FOREIGNKEY: 定義子表中的列為外鍵。REFERENCES:標(biāo)記外鍵所要參考的父表和列ONDELETECASCADE: 允許在刪除父表的列的同時(shí),刪除子表的列。CHECK約束定義每一列所要滿足的條件在CHECK約束中不允許的表達(dá)式:參考CURRVAL,NEXTVAL,LEVEL,和ROWNUM這樣的偽列調(diào)用SYSDATE,UID,USER,和USERENV函數(shù)參考其它列值的查詢...,deptno NUMBER(2),CONSTRAINTemp_deptno_ckCHECK(DEPTNOBETWEEN10AND99),...增加一個(gè)約束可以增加、刪除一個(gè)約束。但不能更改一個(gè)約束。指定一個(gè)約束是有效還是無效??梢杂肕ODIFY子句為一個(gè)表的列增加NOTNULL約束。ALTERTABLE tableADD[CONSTRAINTconstraint]type(column);增加一個(gè)約束為EMP表增加一個(gè)外鍵約束,指定一個(gè)管理員必須已經(jīng)作為一個(gè)職員,存在于EMP表中.SQL>ALTERTABLEemp2ADDCONSTRAINTemp_mgr_fk3 FOREIGNKEY(mgr)REFERENCESemp(empno);Tablealtered.丟棄一個(gè)約束從EMP表中移除約束.SQL>ALTERTABLE emp2DROPCONSTRAINTemp_mgr_fk;Tablealtered.移除

DEPT表上的主鍵約束,因?yàn)橛蠧ASCADE選項(xiàng),所以同時(shí)刪除了在EMP.DEPTNO列上的外鍵約束.SQL>ALTERTABLE dept2DROPPRIMARYKEYCASCADE;Tablealtered.使約束失效執(zhí)行ALTERTABLE語句中的DISABLEz子句可以使約束失效.使用CASCADE選項(xiàng)可以同時(shí)使有依賴關(guān)系選項(xiàng)失效.SQL>ALTERTABLE emp2DISABLECONSTRAINT emp_empno_pkCASCADE;Tablealtered.使約束生效可以使用ENABLE子句來激活一個(gè)失效的約束.

一個(gè)唯一索引,或者主鍵索引在激活唯一鍵或主鍵時(shí)自動(dòng)產(chǎn)生.SQL>ALTERTABLE emp2ENABLECONSTRAINT emp_empno_pk;Tablealtered.級(jí)聯(lián)約束CASCADECONS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論