




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Oracle數(shù)據(jù)庫原理與應(yīng)用2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用第12講使用約束2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)任務(wù)1:定義表的列約束任務(wù)2:維護表的列約束2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用教學(xué)目標(biāo)1、學(xué)會定義表的列約束2、學(xué)會維護表的列約束知識目標(biāo):能力目標(biāo):1、非空約束2、唯一約束3、主鍵約束4、外鍵約束5、檢查約束6、復(fù)合約束2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表
2、的列約束任務(wù)1-1:定義非空約束任務(wù)1-2:定義唯一約束任務(wù)1-3:定義主鍵約束任務(wù)1-4:定義外鍵約束任務(wù)1-5:定義檢查約束任務(wù)1-6:定義復(fù)合約束2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束create table emp02( empno number(4) not null, ename varchar2(14) constraint nn_emp02_ename not null, job varchar2(20), comm number(7,2), deptno number(2);任務(wù)1-1:定義非空約束(not null)例:
3、建立表emp02,字段empno和ename非空,empno由Oracle自動分配約束名,ename指定約束名nn_name。Not null約束用于確保列不能為null。如果列上定義了not null,插入或修改列時,改列要提供數(shù)據(jù)。2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用使用數(shù)據(jù)字典視圖user_constraints查看約束:任務(wù)1:定義表的列約束任務(wù)1-1:定義非空約束(not null)select constraint_name,constraint_type from user_constraints where table_name=upper(e
4、mp02);使用數(shù)據(jù)字典視圖user_cons_columns查看約束對應(yīng)的表列:select column_name from user_cons_columns where constraint_name=upper(nn_emp02_ename);2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-1:定義非空約束(not null)測試:SQL insert into emp02 (empno,job,comm) values (1000,工程師,300)ORA-01400: 無法將 NULL 插入 (SCOTT.EMP02.ENAME)
5、2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-1:定義非空約束(not null)練習(xí):以scott用戶登錄test數(shù)據(jù)庫,建立表author01,表結(jié)構(gòu)如下:表名稱列名約束數(shù)據(jù)類型缺省值注釋Author01authornoNot nullNumber(3)anameNot nullVarchar2(10)salNumber(7,2)0deptnoNumber(2)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束create table dept02( deptno number(2) const
6、raint nn_deptno not null, dname varchar2(20) constraint uk_dept02_dname unique, loc varchar2(100), constraint uk_dept02_deptno unique(deptno);任務(wù)1-2:定義唯一約束(unique)例:建立部門表dept02,定義部門編號deptno為非空約束和唯一約束,部門名稱dname為唯一約束。唯一約束(unique)用于唯一的標(biāo)識數(shù)據(jù),定義了唯一約束后,唯一約束的列值不能重復(fù),但可以為空。2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)
7、1:定義表的列約束任務(wù)1-2:定義唯一約束(unique)測試:SQL insert into dept02 (deptno,dname,loc) values (10,銷售部,上海); 1 row inserted SQL / insert into dept02 (deptno,dname,loc) values (10,銷售部,上海)ORA-00001: 違反唯一約束條件 (SCOTT.UK_DEPT02_DNAME)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束練習(xí):建立作者單位表dept01,表結(jié)構(gòu)如下:表名稱列名約束數(shù)據(jù)類型缺省值注釋d
8、ept01deptnoNot nullNumber(2)dnameUniqueVarchar2(20)任務(wù)1-2:定義唯一約束(unique)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束create table dept03( deptno number(2) constraint pk_dept03_deptno primary key, dname varchar2(14), loc varchar2(100); 任務(wù)1-3:定義主鍵約束(primary key)例:創(chuàng)建dept03表,列deptno定義為主鍵約束唯一標(biāo)識表的行,主鍵約束的列
9、上不僅不能重復(fù),也不能為空。2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用測試:(1)insert into dept03 (deptno,dname,loc) values (10,研發(fā)部,上海); 1 row inserted (2)insert into dept03 (deptno,dname,loc) values (10,研發(fā)部,上海) ORA-00001: 違反唯一約束條件 (SCOTT.PK_DEPT03_DEPTNO) (3)insert into dept03 (dname,loc) values (研發(fā)部,上海); ORA-01400: 無法將 N
10、ULL 插入 (SCOTT.DEPT03.DEPTNO);任務(wù)1:定義表的列約束任務(wù)1-3:定義主鍵約束(primary key)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束練習(xí)1:以scott用戶登錄test數(shù)據(jù)庫,建立表author02,表結(jié)構(gòu)如下:任務(wù)1-3:定義主鍵約束(primary key)表名稱列名約束數(shù)據(jù)類型缺省值注釋Author02authornoPrimary key Number(3)anameNot nullVarchar2(10)salNumber(7,2)0deptnoNumber(2)練習(xí)2:建立作者單位表dept0
11、2,表結(jié)構(gòu)如下:表名稱列名約束數(shù)據(jù)類型缺省值注釋dept02deptnoPrimary keyNumber(2)dnameUniqueVarchar2(20)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-4:定義外鍵約束(foreign key)References選項用于指定主表名及其主鍵列。當(dāng)定義外部鍵約束時,該選項必須指定。例:創(chuàng)建表emp03,列deptno定義為外鍵,與dept02表主鍵列deptno關(guān)聯(lián)。create table emp03( empno number(4) constraint pk_emp03_empno p
12、rimary key, ename varchar2(10) constraint uk_emp03_ename not null, job varchar2(15), sal number(7,2) default 0.00, deptno number(7,2) constraint fk_emp03_deptno references dept02(deptno);2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-4:定義外鍵約束(foreign key)測試:(1)insert into emp03 (empno,ename,job,s
13、al,deptno) values (1234,郭永洪,系統(tǒng)分析員,3500,10); ORA-02291: 違反完整約束條件 (SCOTT.FK_EMP03_DEPTNO) - 未找到父項關(guān)鍵字 (2)insert into dept02 (deptno,dname,loc) values (10,上海,研發(fā)部);(3)重新執(zhí)行(1)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-4:定義外鍵約束(foreign key)練習(xí):建立表author03,列deptno與dept02表的列deptno建立主外鍵關(guān)系,表結(jié)構(gòu)如下:表名稱列名約束數(shù)
14、據(jù)類型缺省值注釋Author03authornoPrimary keyNumber(3)anameNot nullVarchar2(10)salNumber(7,2)0deptnoForeign keyNumber(2)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-5:定義檢查約束(check)Check約束用于強制列數(shù)據(jù)必須滿足條件。例:建立表bonus02,列名empno number(4),sal number(7,2),范圍0-10000,comm number(7,2),范圍0-5000。create table bonus02(
15、 empno number(4), sal number(7,2) constraint ck_bonus02_sal check (sal between 0.00 and 10000.00), comm number(7,2), constraint ck_bonus02_comm check (comm between 0.00 and 5000.00);2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-5:定義檢查約束(check)測試:SQLinsert into bonus02 (empno,sal,comm) values (12
16、35,15000.00,4000.00) ORA-02290: 違反檢查約束條件 (SCOTT.CK_BONUS02_SAL) SQLinsert into bonus02 (empno,sal,comm) values (1235,8000.00,6000.00) ORA-02290: 違反檢查約束條件 (SCOTT.CK_BONUS02_COMM)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-5:定義檢查約束(check)練習(xí):建立表author04,列sal的取值范圍為0-10000,表結(jié)構(gòu)如下:表名稱列名約束數(shù)據(jù)類型缺省值注釋Aut
17、hor04authornoPrimary keyNumber(3)anameNot nullVarchar2(10)salcheckNumber(7,2)00-10000deptnoNumber(2)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-6:定義復(fù)合約束基于多列定義符合約束。例:建立學(xué)生選課表,依據(jù)學(xué)生編號(xsbh)和課程編號(kcbh)建立主鍵。create table xsxk( xsbh number(10), kcbh number(6), kcmc varchar2(30), constraint pk_xsxk_xsb
18、h_kcbh primary key (xsbh,kcbh);2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-6:定義復(fù)合約束測試:SQL insert into xsxk (xsbh,kcbh,kcmc) values (1008203105,100000,Oracle數(shù)據(jù)庫原理與應(yīng)用); 1 row inserted SQL /insert into xsxk (xsbh,kcbh,kcmc) values (1008203105,100000,Oracle數(shù)據(jù)庫原理與應(yīng)用) ORA-00001: 違反唯一約束條件 (SCOTT.PK_X
19、SXK_XSBH_KCBH)2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)1:定義表的列約束任務(wù)1-6:定義復(fù)合約束練習(xí):客戶網(wǎng)上訂購商品,一張訂單必須包含訂單號、客戶編號和商品編號,對客戶編號和商品編號使用復(fù)合約束。2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)2:維護表的列約束任務(wù)2-1:增加約束任務(wù)2-2:修改約束名任務(wù)2-3:刪除約束任務(wù)2-4:禁止約束任務(wù)2-5:激活約束2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)2:維護表的列約束任務(wù)2-1:增加約束表emp01的結(jié)構(gòu):nametypenullab
20、ledefaultcommentsempnoNumber(4)Y雇員編號enameVarchar2(10)YjobVarchar2(15)YCLERKsalNumber(7,2)Y0.00commNumber(7,2)Y0.00deptnameVarchar2(14)Y2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)2:維護表的列約束任務(wù)2-1:增加約束例1:增加非空約束,為emp01表的列empno增加非空約束。SQL alter table emp01 modify empno constraint nn_emp01_empno not null;例2:增加唯一約
21、束,為emp01表的列ename增加唯一約束。SQLalter table emp01 add constraint uk_emp01_ename unique(ename);例3:增加主鍵約束,為emp01表的列empno增加主鍵約束。SQLalter table emp01 add constraint pk_emp01_empno primary key(empno);2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)2:維護表的列約束任務(wù)2-1:增加約束例4:增加外鍵約束,為emp01表添加列deptno,為列empno增加外鍵約束。alter table em
22、p01add ( deptno number(2), constraint fk_emp01_deptno foreign key(deptno) references dept(deptno);例5:增加檢查約束,為emp01表的列comm增加check約束,范圍0-3000。SQLalter table emp01 add constraint ck_emp01_comm check(comm between 0 and 3000);2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)2:維護表的列約束任務(wù)2-1:增加約束練習(xí)1:在表dept01中對列deptno添加
23、主鍵約束,表結(jié)構(gòu)如下:表名稱列名約束數(shù)據(jù)類型缺省值注釋dept01deptnoPrimary keyNumber(2)dnameVarchar2(20)練習(xí)2:在表author中,增加一個列deptno與dept01的列deptno建立外鍵約束,表結(jié)構(gòu)如下:表名稱列名約束數(shù)據(jù)類型缺省值注釋AuthorauthornoPrimary keyNumber(3)anameuniqueVarchar2(10)salcheckNumber(6,2)02022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)2:維護表的列約束任務(wù)2-1:增加約束練習(xí)3:對author表的authorno列建立主鍵約束。練習(xí)4:對author表的aname列建立唯一約束和非空約束。練習(xí)5:對author表的sal列建立檢查約束,檢查范圍0-8000。2022年3月1日星期二計算機(軟件)學(xué)院Oracle數(shù)據(jù)庫原理與應(yīng)用任務(wù)2:維護表的列約束任務(wù)2-2:修改約束名例:將emp01表的主
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出售學(xué)校學(xué)區(qū)房合同范本
- 一建培訓(xùn)合同范本
- 年度供貨合同范本
- 供銷總社采購合同范例
- 勞動工人合同范本
- 公司合作簽合同范本
- 中央新風(fēng)合同范本
- 加盟飯店合同范本
- 中介房租合同范本
- app項目轉(zhuǎn)讓合同范本
- 社會階層與教育選擇行為分析-深度研究
- 社會工作行政(第三版)課件匯 時立榮 第6-11章 項目管理- 社會工作行政的挑戰(zhàn)、變革與數(shù)字化發(fā)展
- 學(xué)校小賣部承包合同范文
- 2025年湘潭醫(yī)衛(wèi)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年湖南鐵道職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- DB 63- T993-2011 三江源生態(tài)監(jiān)測技術(shù)規(guī)范
- 北京市東城區(qū)2025年公開招考539名社區(qū)工作者高頻重點提升(共500題)附帶答案詳解
- 2025福建福州地鐵集團限公司運營分公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 2025至2030年中國電子護眼臺燈數(shù)據(jù)監(jiān)測研究報告
- 兒童睡眠障礙治療
- 2025年浙江省溫州樂清市融媒體中心招聘4人歷年高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論