![《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》 實驗指導(dǎo)書匯 趙德玉 1創(chuàng)建表實驗-9數(shù)據(jù)庫應(yīng)用_第1頁](http://file4.renrendoc.com/view12/M00/14/3E/wKhkGWcd3vuAVpUdAAF2cbPAcBw843.jpg)
![《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》 實驗指導(dǎo)書匯 趙德玉 1創(chuàng)建表實驗-9數(shù)據(jù)庫應(yīng)用_第2頁](http://file4.renrendoc.com/view12/M00/14/3E/wKhkGWcd3vuAVpUdAAF2cbPAcBw8432.jpg)
![《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》 實驗指導(dǎo)書匯 趙德玉 1創(chuàng)建表實驗-9數(shù)據(jù)庫應(yīng)用_第3頁](http://file4.renrendoc.com/view12/M00/14/3E/wKhkGWcd3vuAVpUdAAF2cbPAcBw8433.jpg)
![《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》 實驗指導(dǎo)書匯 趙德玉 1創(chuàng)建表實驗-9數(shù)據(jù)庫應(yīng)用_第4頁](http://file4.renrendoc.com/view12/M00/14/3E/wKhkGWcd3vuAVpUdAAF2cbPAcBw8434.jpg)
![《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》 實驗指導(dǎo)書匯 趙德玉 1創(chuàng)建表實驗-9數(shù)據(jù)庫應(yīng)用_第5頁](http://file4.renrendoc.com/view12/M00/14/3E/wKhkGWcd3vuAVpUdAAF2cbPAcBw8435.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
實驗一表的管理一、實驗?zāi)康?、掌握使用SQL語句創(chuàng)建、修改和刪除表;2、掌握使用SQL語句插入、修改和刪除數(shù)據(jù);3、掌握序列的創(chuàng)建與應(yīng)用。二、實驗內(nèi)容1、練習(xí)SQL語句創(chuàng)建、修改和刪除表;2、練習(xí)使用SQL語句插入、修改和刪除數(shù)據(jù);3、序列的創(chuàng)建與應(yīng)用。三、實驗步驟1、使用SQL創(chuàng)建表(1)創(chuàng)建一個表XS1,字段要求如下:Snochar(10)Snamechar(8)Sagenumber(3)(2)創(chuàng)建表XS2,字段要求如下:Snochar(10)主鍵Snamechar(8)Sagenumber(3)(3)創(chuàng)建一個表XS3,字段要求如下:Snochar(10)主鍵,約束名:PK_SNOSnamechar(8)Sagenumber(3)(4)創(chuàng)建表SC,字段要求如下:Snochar(10)主鍵Cnochar(3)主鍵GradeNUMBER(3)(5)創(chuàng)建一個表XS4,字段要求如下:Snochar(10)Snamechar(8)SageNUMBER(3)Ssexchar(2)默認(rèn)值為:'男'(6)創(chuàng)建表XS5,結(jié)果為EMP表中SAL小于2500的記錄。(7)創(chuàng)建表一空表SC2,結(jié)構(gòu)和SC表一致。2、重命名表把表XS1重命名為STU3、刪除表XS5:4、修改表(1)向XS1中添加新列SDEPTchar(20),SSEXchar(2)(2)刪除XS1的SDEPT和SSEX(3)修改XS1中SAGE為NL(4)把XS2表中的SNAME、SAGE的長度分別改為20和45、添加數(shù)據(jù)(1)利用INSERT命令向XS1表中插入至少3條記錄,學(xué)生也可以插入自己設(shè)計的記錄,以下記錄作為參考:記錄1:(“0001”,“張三”,21)記錄2:自己的學(xué)號、姓名、年齡記錄3:……(2)向XS1插入一條記錄的部分字段:sno:008,sage:20(3)查看默認(rèn)值的作用:向XS4中插入一條記錄:SNO:0007,SNAME:張三,SAGE:19。(4)向XS2表中插入一條記錄:SNO:NULL,SNAME:張三,SAGE:19。該記錄能插入嗎?分析原因。(5)利用子查詢把表XS1的數(shù)據(jù)插入到表XS3中,然后查看XS3表中的數(shù)據(jù):6、修改數(shù)據(jù)(1)將XS1表中所有學(xué)生的年齡加1歲,然后查看XS1表中的數(shù)據(jù)。(2)將XS1表中的把自己的年齡改為22歲,然后查看XS1表中的數(shù)據(jù)7、刪除數(shù)據(jù)(1)刪除XS3中張三的學(xué)生記錄,然后查看XS3表中的數(shù)據(jù)。(2)刪除XS3全部記錄,然后查看XS3表中的數(shù)據(jù)。(3)清空XS1表的全部記錄,然后查看XS3表中的數(shù)據(jù)。8、序列(1)創(chuàng)建序列①創(chuàng)建的序列名為ABC,是遞增序列,增量為2,初始值為10。該序列不循環(huán),不使用內(nèi)存。不定義最小值,默認(rèn)最小值為1,最大值為100000②產(chǎn)生序列的第一個值,并查看序列的第一個值③產(chǎn)生序列的下一個值,并查看序列的下一個值④產(chǎn)生序列的當(dāng)前值,并查看序列的當(dāng)前值(2)序列的應(yīng)用①創(chuàng)建一個表:ST(sno,sname,sage,ssex),數(shù)據(jù)類型如下所示:SNOCHAR(12),SNAMECHAR(8),SAGENUMBER(2,0),SSEXCHAR(2),主鍵:SNO②創(chuàng)建序列STSEQ:是遞增序列,增量為1,初始值為1。該序列不循環(huán),不使用內(nèi)存。不定義最小值,默認(rèn)最小值為1,最大值為100000③使用序列自動產(chǎn)生學(xué)號:(202109060101、其他的字段姓名、年齡、性別自定),(202109060102、其他的字段姓名、年齡、性別自定),(202109060103、自己的姓名,自己的年齡,自己的性別)例:INSERTINTOStvalues(‘2019090601’||to_char(sn.nextval,’fm00’),’張三’,21,’男’);④查看序列是否起作用:SELECT*FR0MST(3)序列應(yīng)用題,利用序列自動產(chǎn)生id①創(chuàng)建一個表:TABSEQ,字段如下:idNUMBER主鍵,NAMECHAR(12)②創(chuàng)建一個序列:ID_SEQ,起始值為10,結(jié)束值為1000,步長為10,其他為默認(rèn)選項。③插入記錄:記錄1:序列號10,姓名自定記錄2:序列號20,姓名自定記錄3:序列號30,姓名自定記錄4:…④查看序列:(4)刪除序列,ABC,ST,ID_SEQ四、實驗報告要求應(yīng)包含以下內(nèi)容:1、實驗名稱:本實驗項目的名稱。2、實驗?zāi)康模好枋鐾ㄟ^實驗要達到的結(jié)果。3、實驗內(nèi)容:描述實驗任務(wù)。4、實驗步驟:描述實驗步驟及中間的結(jié)果或現(xiàn)象。在實驗中做了什么事情,怎么做的,發(fā)生的現(xiàn)象和中間結(jié)果。5、實驗討論與總結(jié):說明實驗過程中遇到的問題及解決辦法;新發(fā)現(xiàn)或個人的收獲;未解決/需進一步研討的問題或建議新實驗方法等。實驗二數(shù)據(jù)查詢一、實驗?zāi)康?、掌握SELECT的語法結(jié)構(gòu);2、掌握單表查詢;3、掌握連接查詢;4、掌握子查詢;5、掌握集合查詢;二、實驗內(nèi)容1、在數(shù)據(jù)庫ORCL中創(chuàng)建Student、SC、Course三個表,表結(jié)構(gòu)如下所示:學(xué)生表Student(Sno,Sname,Ssex,Sage,Sdept)結(jié)構(gòu)如下:Sno(學(xué)號)varchar(12)Sname(姓名)varchar(8)Sage(年齡)NUMBER(3)Ssex(性別)varchar(2)Sdept(系別)varchar(20)Rxrq(入學(xué)日期)date主鍵:sno,并向表中插入如下數(shù)據(jù),至少三條以上的記錄:SnoSnameSageSsexSdeptRxrq自己的學(xué)號自己的姓名自己的年齡自己的性別信息科學(xué)與工程學(xué)院16-9月-2021或自定………………課程表Course(Cno,Cname,Cpno,Ccredit)結(jié)構(gòu)如下:Cno(課程號)varchar(3)Cname(課程名)varchar(20)Cpno(先修課)varchar(3)Ccredit(學(xué)分)NUMBER(2)主鍵:Cno,并向表中插入如下數(shù)據(jù):CnoCnameCpnoCcredit1數(shù)據(jù)庫232數(shù)據(jù)結(jié)構(gòu)353C語言4學(xué)生選課表SC(Sno,Cno,Grade)結(jié)構(gòu)如下:Sno(學(xué)號)varchar(12)Cno(課程號)varchar(3)Grade(成績)NUMBER(3)主鍵:(Sno,Cno),并向表中插入如下數(shù)據(jù):SnoCnoGrade必須來自student表1自定必須來自student表2自定必須來自student表3自定必須來自student表1自定必須來自student表2自定必須來自student表1自定自己的學(xué)號1自定自己的學(xué)號2自定自己的學(xué)號3NULL2、完成各類查詢操作(單表查詢、連接查詢、嵌套查詢、集合查詢)三、實驗步驟1、使用SQL創(chuàng)建表:Student、SC、Course,表結(jié)構(gòu)如實驗內(nèi)容1所示2、向Student、SC、Course表中插入實驗內(nèi)容1所示的記錄3、簡單查詢根據(jù)題目完成如下查詢。(1)查詢?nèi)w學(xué)生的詳細(xì)記錄。(2)查詢?nèi)w學(xué)生的學(xué)號,姓名(3)查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系,入學(xué)日期(4)查全體學(xué)生的姓名及其出生年份(5)查全體學(xué)生的姓名及其出生年份(指定列別名為:出生年份)(6)查全體學(xué)生的姓名,出生年份以及‘姓名及出生年份’(7)查全體學(xué)生的姓名,顯示的列為:姓名是:SNAME(提示:用連接運算符||)(8)查詢選修了課程的學(xué)生學(xué)號(9)查詢選修了課程的學(xué)生學(xué)號(取消重復(fù)的行)(10)查詢所有年齡在19歲以下的學(xué)生姓名及其年齡。(11)查詢考試成績有不合格的學(xué)生的學(xué)號。(12)查詢年齡在20-22歲(包括20歲和22歲)之間的學(xué)生的姓名、系別和年齡(13)查詢年齡不在20~22歲之間的學(xué)生姓名、系別和年齡(14)查詢信息科學(xué)與工程學(xué)院、數(shù)學(xué)與統(tǒng)計學(xué)院學(xué)生的姓名和性別(15)查詢既不是信息科學(xué)與工程學(xué)院又不是數(shù)學(xué)與統(tǒng)計學(xué)院學(xué)生的姓名和性別(16)查詢自己學(xué)號的詳細(xì)情況(用like實現(xiàn))(17)查詢所有姓張學(xué)生的姓名、學(xué)號和性別(18)查詢所有不姓張的學(xué)生姓名(19)向Course表中插入如下兩條記錄,然后查詢DB_Design課程的課程號和學(xué)分(用like和通配符實現(xiàn))CnoCnameCpnoCcredit4DB_design145DBAdesign13(20)查詢第三個字是庫的課程詳細(xì)信息(21)查所有有成績的學(xué)生學(xué)號和課程號(22)查所沒有有成績的學(xué)生學(xué)號和課程號。如果用“=”比較能執(zhí)行嗎?(23)查詢信息科學(xué)與工程學(xué)院年齡在20歲以下的學(xué)生姓名,學(xué)號(24)查詢信息科學(xué)與工程學(xué)院、數(shù)學(xué)與統(tǒng)計學(xué)院學(xué)生的姓名和性別(用OR實現(xiàn))(25)查詢學(xué)分小于5分大于等于3分的課程名和學(xué)分(26)查詢選修了1號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。(27)查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系名升序排列,同一系中的學(xué)生按年齡降序排列。(按字段序號排序)(28)查詢信息科學(xué)與工程學(xué)院的總?cè)藬?shù)(29)查詢自己學(xué)號選修的最高分,平均分(30)查詢被選修課程的課程號及相應(yīng)的選課人數(shù)(31)查詢每個選修的學(xué)生學(xué)號及其選修的課程門數(shù)(32)查詢選修超過2門課程的學(xué)生學(xué)號。(33)查詢每個系的學(xué)生人數(shù)(34)查詢平均成績85分以上的學(xué)號和平均成績(35)查詢有2門以上課程是90分以上的學(xué)生的學(xué)號及(90分以上的)課程數(shù)。(36)查詢001選修的課程號與002選修的課程號的并集(用UNION和UNIONALL)(37)查詢既選了1號又選了2號課程的學(xué)生學(xué)號。(用交集命令和AND兩種方法實現(xiàn))(38)查詢沒有選2號課程的學(xué)生學(xué)號(用差集命令)(39)查詢當(dāng)前的系統(tǒng)日期(40)求-7和5的余數(shù)(41)求第3、4個字為科學(xué)的系名(用SUBSTR函數(shù)實現(xiàn))(42)查詢2018年入學(xué)的學(xué)生學(xué)號、姓名提示:用TO_CHAR函數(shù))(43)查詢軟件工程系所有女生的總成績(44)查詢每門課的選課人數(shù),顯示課程號和選課人數(shù),按選課人數(shù)降序,如果人數(shù)相同,按課程號升序。4、高級查詢(1)求STUDENT和SC表的交叉表連接(2)查詢選修了課程的的學(xué)號、姓名及其選修課程課程號和成績(采用joinon和“,”where格式實現(xiàn))(3)求student和SC的自然連接(4)查詢每一門課的間接先修課(即先修課的先修課)(5)查詢每個學(xué)生及其選修課程的情況(包括沒有選修課程的學(xué)生,采用左外連接,采用兩種外連接格式)(6)查詢選修課程的情況及相應(yīng)學(xué)生情況(采用右外連接,采用兩種外連接格式)(7)求STUDET和SC表的完全外連接(思考:與STUDENT、SC右外連接一樣嗎?)(8)查詢選修2號課程且成績在60分以上的所有學(xué)生的學(xué)號、姓名(9)查詢自己選修課程的總成績(10)查詢平均成績超過80的學(xué)號與姓名(11)單列子查詢:查詢與自己在同一個系學(xué)習(xí)的學(xué)生(12)多列子查詢:查詢與自己的系別年齡相同的學(xué)號、姓名、系別、年齡(13)查詢其他系中比信息科學(xué)與工程學(xué)院任意一個(其中某一個)學(xué)生年齡大的學(xué)生姓名和年齡(14)查選修了“數(shù)據(jù)庫”課程的學(xué)生學(xué)號和姓名(分別用連接查詢和子查詢實現(xiàn))(15)查詢所有選修了1號課程的學(xué)生姓名(用連接、IN子查詢和EXISTS實現(xiàn))(16)查詢沒有選修“數(shù)據(jù)庫”課程的學(xué)生學(xué)號和姓名(用IN子查詢和EXISTS分別實現(xiàn))(17)查詢自己學(xué)生不學(xué)的的課程名。(用EXISTS相關(guān)子查詢和IN謂詞實現(xiàn))(18)找出每個學(xué)生超過他選修課程平均成績的學(xué)號和課程號(19)查詢選修了全部課程的學(xué)生姓名(20)查詢所有學(xué)生都選的課程號、課程名(21)查詢每個學(xué)生的學(xué)號,姓名及選修課程的總分和平均分。(提示:使用開窗函數(shù)OVER)四、實驗報告要求應(yīng)包含以下內(nèi)容:1、實驗名稱:本實驗項目的名稱。2、實驗?zāi)康模好枋鐾ㄟ^實驗要達到的結(jié)果。3、實驗內(nèi)容:描述實驗任務(wù)。4、實驗步驟:描述實驗步驟及中間的結(jié)果或現(xiàn)象。在實驗中做了什么事情,怎么做的,發(fā)生的現(xiàn)象和中間結(jié)果。5、實驗討論與總結(jié):說明實驗過程中遇到的問題及解決辦法;新發(fā)現(xiàn)或個人的收獲;未解決/需進一步研討的問題或建議新實驗方法等。實驗三數(shù)據(jù)庫完整性一、實驗?zāi)康?、理解并掌握關(guān)系的三類數(shù)據(jù)完整性的概念以及域完整性含義;2、理解并掌握PRIMARYKEY、CHECK、FOREIGNKEY-REFERENCES、NOTNULL、UNIQUE等關(guān)鍵字的含義及規(guī)則;3、掌握使用SQL語句完整性的設(shè)置。二、實驗內(nèi)容1、練習(xí)使用SQL語句設(shè)置PRIMARYKEY、NOTNULL、UNIQUE、CHECK、FOREIGNKEY約束;2、練習(xí)約束的查看;3、練習(xí)使用SQL語句刪除約束。三、實驗步驟1、以SCOTT賬戶登錄ORCL數(shù)據(jù)庫(1)首先運行CMD,執(zhí)行SQLPLUSSYS/Oracle11ASSYSDBA;啟動SQL*PLUS,登錄到ORCL數(shù)據(jù)庫。(2)執(zhí)行CONNECTSCOTT/tiger;連接到ORCL數(shù)據(jù)庫。(3)使用SQL創(chuàng)建表:Student、SC、Course,表結(jié)構(gòu)如實驗二所示。(4)向Student、SC、Course表中插入實驗二所示的記錄。2、主鍵約束(1)使用ALTERTABLE設(shè)置主鍵,約束名:PK_SNOCNO①創(chuàng)建表SC1,結(jié)構(gòu)如下:snovarchar(12)cnovarchar(3)gradenumber(3)②用命令A(yù)LTERTABLE設(shè)置(SNO,CNO)為主鍵,約束名為PK_SNOCNO③數(shù)據(jù)驗證,插入一條記錄指定SNO,CNO為NULL進行數(shù)據(jù)驗證。(2)分別設(shè)計一個Student、Course表的主鍵屬性為NULL和主鍵值重復(fù)的驗證記錄。3、UNIQUE約束(1)用CREATETABLE創(chuàng)建表STUDENT2,并設(shè)置sname為唯一約束,結(jié)構(gòu)如下:snovarchar(12)主鍵snamevarchar(8)UNIQUEsagenumber(3)Ssexvarchar(2)Sdeptvarchar(20)插入兩條記錄指定Sname為重復(fù)的值,進行UNIQUE數(shù)據(jù)驗證。(2)使用ALTERTABLE設(shè)置UNIQUE約束=1\*GB3①使用ALTERTABLE設(shè)置STUDENT的SNAME為UNIQUE約束,約束名為:UQ_SN=2\*GB3②數(shù)據(jù)驗證插入一條記錄指定Sname為重復(fù)的值,進行UNIQUE數(shù)據(jù)驗證。③刪除約束:UQ_SN4、設(shè)置NOTNULL約束(1)用CREATETABLE創(chuàng)建表STUDENT3,并設(shè)置sname為非空約束,結(jié)構(gòu)如下:snovarchar(12)主鍵snamevarchar(8)NOTNULLsagenumber(3)Ssexvarchar(2)Sdeptvarchar(20)插入一條條記錄指定Sname為NULL,進行NOTNULL約束數(shù)據(jù)驗證(2)使用ALTERTABLE設(shè)置NOTNULL約束①使用ALTERTABLE設(shè)置STUDENT3表中SDEPT為NOTNULL約束,約束名為:SDNL②數(shù)據(jù)驗證插入一條記錄指定Sdept為NULL,進行NULL數(shù)據(jù)驗證。③刪除約束:SDNL5、設(shè)置CHECK約束(1)用CREATETABLE創(chuàng)建表STUDENT4,并設(shè)置sage的檢查條件:SAGE<=70ANDSAGE>=18,結(jié)構(gòu)如下:snovarchar(12)主鍵snamevarchar(8)sagenumber(3)Ssexvarchar(2)Sdeptvarchar(20)進行數(shù)據(jù)驗證CHECK約束插入一條記錄指定Sage為18-70之外的值,進行CHECK數(shù)據(jù)驗證。(2)使用ALTERTABLE設(shè)置CHECK約束①使用ALTERTABLE設(shè)置SC表中GRADE檢查條件:GRADE<=100ANDGRADE>=0,約束名為:SCCK②數(shù)據(jù)驗證插入一條記錄指定Grade為0-100之外的值,進行CHECK數(shù)據(jù)驗證。③刪除約束:SCCK(3)設(shè)置student的檢查約束,約束的名稱為sexchk,條件:性別只能為男和女。仿照上面并設(shè)計一個數(shù)據(jù)驗證記錄。6、設(shè)置FOREIGNKEY約束(1)CREATETABLE設(shè)置FOREIGNKEY約束,執(zhí)行如下命令:=1\*GB3①createtableZY(zyhchar(2)primarykey,zymchar(20));=2\*GB3②createtableXSZY(xhchar(10)PRIMARYKEY,xmchar(8),nlnumber(3),zyhchar(2)constraintcon_xszreferenceszy(zyh))=3\*GB3③向ZY表和XSZY表插入如下記錄:=4\*GB3④數(shù)據(jù)驗證:在XSZY中插入外鍵值在ZY主鍵值(ZYH)中不存在的記錄:INSERTINTOXSZYVALUES(‘004’,’趙六’,19,‘04’);?在XSZY中修改外鍵值在ZY主鍵值(ZYH)中不存在的記錄:UPDATEXSZYSETZYH=’07’WHEREXH=’001’;?=5\*GB3⑤刪除約束con_xsz(2)使用ALTERTABLE設(shè)置FOREIGNKEY約束=1\*GB3①檢查STUDENT表和SC表主鍵-外鍵數(shù)據(jù)是否有沖突SELECT*FROMSTUDENTSELECT*FROMSC=2\*GB3②設(shè)置SC的Sno為外鍵,該外鍵參照Student的主鍵(Sno),約束名位fksno1。=3\*GB3③數(shù)據(jù)驗證刪除主表的記錄(從表有對應(yīng)的記錄):修改主表的記錄(從表有對應(yīng)的記錄):修改子表的記錄(主表沒有對應(yīng)的記錄):刪除子表的記錄(主表有對應(yīng)的記錄):=4\*GB3④查看數(shù)據(jù),執(zhí)行如下命令,查看規(guī)則是否起作用:SELECT*FROMSTUDENTSELECT*FROMSC⑤回滾數(shù)據(jù):ROLLBACK⑥刪除約束FKSNO1:(3)使用ALTERTABLE設(shè)置FOREIGNKEY約束:ONDELETE規(guī)則①檢查STUDENT表和SC表主鍵-外鍵數(shù)據(jù)是否有沖突SELECT*FROMSTUDENTSELECT*FROMSC②設(shè)置SC的Sno為外鍵,該外鍵參照Student的主鍵(Sno),約束名位fksno2,約束規(guī)則為:ONDELETE。③數(shù)據(jù)驗證刪除主表的記錄(從表有對應(yīng)的記錄):修改主表的記錄(從表有對應(yīng)的記錄):修改子表的記錄(主表沒有對應(yīng)的記錄):刪除子表的記錄(主表有對應(yīng)的記錄):④查看數(shù)據(jù),執(zhí)行如下命令,查看規(guī)則是否起作用:SELECT*FROMSTUDENTSELECT*FROMSC⑤刪除約束FKSNO2:(4)使用ALTERTABLE設(shè)置FOREIGNKEY約束:ONDELETESETNULL規(guī)則=1\*GB3①檢查ZY和XSZY數(shù)據(jù)是否有沖突SELECT*FORMZYSELECT*FROMXSZY=2\*GB3②設(shè)置XSZY的ZYH為外鍵,該外鍵參照ZY的主鍵(ZYH),約束名位FKZYSNULL,約束規(guī)則為:SETNULL。=3\*GB3③數(shù)據(jù)驗證:DELETEFROMzyWHEREzyh=‘02’=4\*GB3④查看數(shù)據(jù),執(zhí)行如下命令,查看規(guī)則是否起作用:SELECT*FROMZY;SELECT*FROMXSZY;⑤刪除約束FKZYSNULL;(5)設(shè)置SC表和course表的參照關(guān)系,參照規(guī)則為:ONDELETECASCADE,約束的名稱為SCCO_FK。提示:設(shè)置之前一定要查看SC表和course表的數(shù)據(jù)是否有沖突。7、刪除STUDENT、SC所有約束,如果已刪除則忽略四、實驗報告要求應(yīng)包含以下內(nèi)容:1、實驗名稱:本實驗項目的名稱。2、實驗?zāi)康模好枋鐾ㄟ^實驗要達到的結(jié)果。3、實驗內(nèi)容:描述實驗任務(wù)。4、實驗步驟:描述實驗步驟及中間的結(jié)果或現(xiàn)象。在實驗中做了什么事情,怎么做的,發(fā)生的現(xiàn)象和中間結(jié)果。5、實驗討論與總結(jié):說明實驗過程中遇到的問題及解決辦法;新發(fā)現(xiàn)或個人的收獲;未解決/需進一步研討的問題或建議新實驗方法等。實驗四索引與視圖一、實驗?zāi)康?、理解索引的含義2、掌握創(chuàng)建索引的命令;3、掌握查看查詢中索引的使用方法;4、掌握索引在加快查詢中的作用5、理解視圖的含義6、掌握創(chuàng)建視圖的SQL命令;7、理解視圖更新的限制二、實驗內(nèi)容1、練習(xí)使用SQL語句創(chuàng)建索引、查看索引、刪除索引2、練習(xí)索引的應(yīng)用3、練習(xí)使用SQL語句創(chuàng)建視圖、查看視圖、刪除視圖三、實驗步驟1、以SCOTT賬戶登錄ORCL數(shù)據(jù)庫(1)首先運行CMD,執(zhí)行SQLPLUSSYS/Oracle11ASSYSDBA;啟動SQL*PLUS,登錄到ORCL數(shù)據(jù)庫。(2)執(zhí)行CONNECTSCOTT/tiger;連接到ORCL數(shù)據(jù)庫。(3)使用SQL創(chuàng)建表:Student、SC、Course,表結(jié)構(gòu)如實驗二所示(4)向Student、SC、Course表中插入實驗二所示的記錄2、根據(jù)STUEDNT中SNAME建立非唯一索引INDSN3、根據(jù)(SAGE,SSEX)創(chuàng)建STUDENT表的索引SESAIND4、查看student表的索引信息,是否有前面創(chuàng)建的索引?SELECTindex_nameFROMUSER_INDEXESWHEREtable_name=‘表名’;5、查看查詢時索引是否被引用查看之前需要執(zhí)行如下命令:analyzetablestudentCOMPUTEstatistics;SETautotraceonexplain;(1)查詢自己姓名的記錄;是否引用索引INDSN(2查詢‘信息科學(xué)與工程學(xué)院’的學(xué)生記錄;是否引用索引INDSN(3)查詢和自己年齡、性別相同的學(xué)生記錄;是否引用索引SESAIND?(4)查詢和自己年齡相同的學(xué)生記錄;是否引用索引SESAIND?(5)查詢和自己性別相同的學(xué)生記錄;是否引用索引SESAIND?6、索引在加快查詢中的作用(1)創(chuàng)建表EMP1CREATETABLEemp1(idnumber(8,0),namevarchar2(20),sexnumber(1,0),birthdate,phonevarchar2(15));(2)向表中插入1000000行數(shù)據(jù),然后執(zhí)行:SELECT*FROMEMP1;declarevtodaydate;vcntnumber(8,0):=1000000;beginselectsysdateintovtodayfromdual;foriin1..vcntloopinsertintoemp1(id,name,sex,birth,phone)values(i,'name'||i,mod(i,2),vtoday-i,'phone'||i);ifmod(i,100)=0thencommit;endif;endloop;end;(3)設(shè)置查詢計劃統(tǒng)計analyzetableemp1COMPUTEstatistics;SETautotraceonexplain;(4)無索引:執(zhí)行查詢,查看是引用索引,為什么?SELECTid,name,phoneFROMemp1WHEREid=849765;(5)在ID上創(chuàng)建索引idx_id,再執(zhí)行查詢,是否引用索引,為什么?。CREATEindexidx_idonemp1(id);SELECTid,name,phoneFROMemp1WHEREid=849765;(6)在SEX上創(chuàng)建索引idx_sex,執(zhí)行查詢看是否引用索引,為什么?CREATEINDEXIDX_SEXONEMP1(sex);SELECTid,name,phoneFROMemp1WHEREsex=1;7、刪除索引INDSN,然后查看索引是否還在?8、創(chuàng)建視圖先要以sys身份登錄,執(zhí)行:GRANTCREATEVIEWtoSCOTT;在以SCOTT身份登錄(1)在SCOTT下創(chuàng)建視圖SV1,結(jié)果為:所有學(xué)生的學(xué)號與姓名(2)創(chuàng)建每個學(xué)生的學(xué)號及平均成績視圖S_G,(分指定視圖列名和不指定視圖列名兩種情況)(3)創(chuàng)建帶有WITHCHECKOPTION的視圖CREATEVIEWSAGE_StuASSELECTSno,Sname,SageFROMStudentWHERESage>19WITHCHECKOPTION驗證:INSERTINTOSAGE_StuVALUES(‘007’,’牛七’,18);執(zhí)行能否成功?UPDATESAGE_STUSETSAGE=17WHERESNO=‘003’;執(zhí)行能否成功?(4)創(chuàng)建只讀視圖(WITHREADONLY)CREATEVIEWSV2ASSELECTSNO,SNAME,SAGEFROMWHERESDEPT=‘信息科學(xué)與工程學(xué)院’WITHREADONLY驗證:刪除視圖SV2的所有記錄驗證:向視圖SV2中插入一條記錄(5)創(chuàng)建一個視圖view1,查詢網(wǎng)絡(luò)工程系年齡20-21之間的男生信息。9、查詢視圖信息(1)查詢當(dāng)前用戶SCOTT下的所有視圖及定義(2)查看視圖SV1、S_G、SAGE_Stu、SV2視圖的列(3)查看視圖SV1、S_G、SAGE_Stu、SV2視圖的記錄10、更新視圖:把S_G中001的平均成績改為90分。查看能否執(zhí)行,為什么?11、刪除視圖SV1,然后查看視圖是否被刪除。四、實驗報告要求應(yīng)包含以下內(nèi)容:1、實驗名稱:本實驗項目的名稱。2、實驗?zāi)康模好枋鐾ㄟ^實驗要達到的結(jié)果。3、實驗內(nèi)容:描述實驗任務(wù)。4、實驗步驟:描述實驗步驟及中間的結(jié)果或現(xiàn)象。在實驗中做了什么事情,怎么做的,發(fā)生的現(xiàn)象和中間結(jié)果。5、實驗討論與總結(jié):說明實驗過程中遇到的問題及解決辦法;新發(fā)現(xiàn)或個人的收獲;未解決/需進一步研討的問題或建議新實驗方法等。實驗五數(shù)據(jù)庫編程一、實驗?zāi)康?、了解數(shù)據(jù)庫編程結(jié)構(gòu);2、掌握變量和常量的聲明和使用方法;3、掌握條件、分支語句的使用方法;4、掌握循環(huán)語句的使用方法;5、理解異常,掌握常用的異常的處理方法;6、理解游標(biāo)的含義;7、掌握游標(biāo)的使用;二、實驗內(nèi)容1、練習(xí)使用變量的定義和使用方法2、練習(xí)條件、分支語句的使用方法3、練習(xí)FOR、LOOP、WHILE循環(huán)語句的使用方法;4、練習(xí)異常的處理方法5、練習(xí)游標(biāo)的使用三、實驗步驟1、以SCOTT用戶登錄ORCL數(shù)據(jù)庫2、創(chuàng)建實驗四所示的Student、SC、Course表,并輸入實驗四所示的記錄3、簡單變量的定義和輸出:(1)編程:定義一個變量a1,賦值為100,并輸出該變量的值。(2)編程:定義一個變量a2,接收從鍵盤輸入的值,并輸出該變量的值4、SELECT語句在塊中使用編程:定義一個變量總平均分:GVG,把自己的平均成績賦值為GVG,并輸出GVG的值。5、根據(jù)表的字段定義變量(1)編程:根據(jù)STUDENT.SNAME定義一個變量SNVAR,賦值為“牛七”,并輸出該變量的值6、記錄變量的定義編程:根據(jù)STUDENT表的字段定義一個記錄變量STUVAR,從鍵盤接收一個姓名給普通變量SN,查詢SN的SNO,SNAME,SAGE,SSEX,SDEPT,RXRQ并把該記錄的值賦值給記錄變量STUVAR,并輸出該記錄變量個字段的值。7、IF語句的使用(1)編程:如果溫度大于30℃,則顯示“溫度偏高”(2)編程:根據(jù)性別,顯示尊稱(3)編程:在SCOTT用戶下,根據(jù)雇員工資分級顯示稅金,顯示:EMP.EMPNO為7788的稅金工資大于>=3000,稅金:工資*8%工資大于>=1500,工資<3000,稅金:工資*6%工資大于<1500,稅金:工資*4%8、CASE語句使用(1)編程:根據(jù)輸入的成績顯示相應(yīng)的等級:成績90已上優(yōu)秀,成績90-80之間良好,成績80-70之間中,成績70-60之間合格,成績60以下不合格。(2)CASE語句出現(xiàn)在賦值語句的方法:編程:例:根據(jù)成績顯示相應(yīng)的等級:成績90已上優(yōu)秀,成績90-80之間良好,成績80-70之間中,成績70-60之間合格,成績60以下不合格。(3)搜索CASE結(jié)構(gòu)根據(jù)成績顯示相應(yīng)的等級:成績90已上優(yōu)秀,成績90-80之間良好,成績80-70之間中,成績70-60之間合格,成績60以下不合格。(4)CASE在SELECT中的應(yīng)用①統(tǒng)計各系的男女生人數(shù)②根據(jù)STUDENT,SC表查詢每個學(xué)生的姓名,選修的課程號,及成績等級(成績90已上優(yōu)秀,成績90-80之間良好,成績80-70之間中,成績70-60之間合格,成績60以下不合格)。③查詢每位男生的學(xué)習(xí)成績,若學(xué)習(xí)成績高于400,顯示“成績優(yōu)秀”,學(xué)習(xí)成績在300-400之間,顯示“成績良好”,學(xué)習(xí)成績低于300,顯示“成績一般”。9、循環(huán)語句的使用(1)分別使用LOOP、FORLOOP、WHILELOOP求:求1+2+3+...+100=?(2)編程:求2-500之間的素數(shù)(3)輸出一個空心三角形BEGIN FORIIN1..9LOOP IFI=1ORI=9THEN DBMS_OUTPUT.PUT_LINE(to_char(I)||rpad('',12-I,'')||rpad('*',2*i-1,'*'));ELSE DBMS_OUTPUT.PUT_LINE(to_char(I)||rpad('',12-I,'')||'*'||rpad('',I*2-3,'')||'*'); ENDIF; ENDLOOP; END;(4)根據(jù)上例:編寫程序輸出一個實心三角形1*2**3***4****5*****6******7*******8********(5)編程:查詢男女學(xué)生平均成績,若男生平均成績高出女生平均成績50%,則顯示“男生比女生分?jǐn)?shù)高多了”的信息;若男生平均成績與女生平均成績比率在0.8~1.2之間,則顯示“男生比女生的平均成績差不多”的信息;否則顯示“女生比男生平均成績高“的信息。10、異常(1)系統(tǒng)預(yù)定義異常編程:從鍵盤輸入一個學(xué)號,如果student表中存在該學(xué)生,則顯示該學(xué)生姓名;如果沒有該學(xué)號,異常處理錯誤:顯示“學(xué)號錯誤,沒有找到相應(yīng)學(xué)生!”,否則其他異常處理錯誤:顯示“發(fā)生其他錯誤!”。執(zhí)行程序:輸入自己的學(xué)號;再輸入一個不存在的學(xué)號。(2)由程序代碼捕捉并顯示系統(tǒng)錯誤SETSERVEROUTPUTONdeclarea1number:=10;begina1:=a1/0;EXCEPTIONWHENOTHERSTHENDBMS_OUTPUT.PUT_LINE('發(fā)生系統(tǒng)錯誤!');DBMS_OUTPUT.PUT_LINE('錯誤代碼:'||SQLCODE());DBMS_OUTPUT.PUT_LINE('錯誤信息:'||SQLERRM());end;(3)自定義異常編程:根據(jù)輸入的學(xué)號和年齡進行異常處理,把輸入的學(xué)號和姓名插入到表student中:如果age(年齡)<0,撤銷該插入操作,并顯示錯誤“年齡小于0”;如果age(年齡)>100,撤銷該插入操作,并顯示錯誤“年齡大于100”。(4)RAISE_APPLICATION_ERROR函數(shù)引發(fā)系統(tǒng)異常。11、隱式游標(biāo):編程:把SC表的不及格的成績提10分,如有不及格的提分后顯示:提分成功,如沒有不及格的顯示:沒有不及格的。12、顯示的游標(biāo)(1)編程:使用顯示的游標(biāo)提取‘自己名字’的SNO,SDEPT,并顯示其SNO和SDEPT。(2)利用游標(biāo)處理多條記錄①編程:顯示數(shù)據(jù)庫成績最高的前三個人的姓名,成績②編程(用WHILE循環(huán)):顯示所有人的數(shù)據(jù)庫成績和姓名,按成績降序排序③編程(用LOOPENDLOOP循環(huán)):顯示所有人的數(shù)據(jù)庫成績和姓名,按成績降序排序(3)游標(biāo)循環(huán)利用游標(biāo)循環(huán):編程顯示所有學(xué)生的學(xué)號與姓名(4)編程:寫一游標(biāo)cur1,輸出course表的第2-4條記錄。四、實驗報告要求應(yīng)包含以下內(nèi)容:1、實驗名稱:本實驗項目的名稱。2、實驗?zāi)康模好枋鐾ㄟ^實驗要達到的結(jié)果。3、實驗內(nèi)容:描述實驗任務(wù)。4、實驗步驟:描述實驗步驟及中間的結(jié)果或現(xiàn)象。在實驗中做了什么事情,怎么做的,發(fā)生的現(xiàn)象和中間結(jié)果。5、實驗討論與總結(jié):說明實驗過程中遇到的問題及解決辦法;新發(fā)現(xiàn)或個人的收獲;未解決/需進一步研討的問題或建議新實驗方法等。實驗六存儲過程與函數(shù)一、實驗?zāi)康?、理解存儲過程的概念2、了解存儲過程的分類和使用方法;3、掌握存儲過程的創(chuàng)建、執(zhí)行和刪除;4、掌握函數(shù)的定義與調(diào)用二、實驗內(nèi)容1、練習(xí)創(chuàng)建存儲過程、執(zhí)行和刪除存儲過程的方法2、練習(xí)創(chuàng)建函數(shù)、刪除函數(shù)的方法3、練習(xí)函數(shù)的調(diào)用方法三、實驗步驟以scott用戶登錄,并創(chuàng)建STUDENT,SC,COURSE表,并輸入相應(yīng)的記錄。1、創(chuàng)建不帶參數(shù)的存儲過程(1)創(chuàng)建一個顯示學(xué)生總?cè)藬?shù)的存儲過程PRC1(2)創(chuàng)建一個顯示張三學(xué)生平均分的存儲過程PRC2(3)創(chuàng)建一個顯示所有學(xué)生學(xué)號、姓名的存儲過程PRC3(4)分別執(zhí)行存儲過程PRC1、PRC2、PRC32、創(chuàng)建帶輸入?yún)?shù)的存儲過程(1)創(chuàng)建一個帶有輸入?yún)?shù)(傳遞學(xué)生的姓名,默認(rèn)值為‘張三’)的存儲過程PRC4:查詢某學(xué)生(輸入?yún)?shù)傳遞的)的平均成績。=1\*GB3①執(zhí)行存儲過程PRC4:EXECUTEPRC4;EXECUTEPRC4(‘李四’);EXECUTEPRC4(‘自己的姓名’);(2)創(chuàng)建一個帶有兩個輸入?yún)?shù)的存儲過程PRC5:查詢?nèi)我庀翟海ㄝ斎雲(yún)?shù)傳遞),任意性別(輸入?yún)?shù)傳遞)學(xué)生的平均成績。=1\*GB3①執(zhí)行存儲過程PRC5:EXECUTEPRC5(‘信息學(xué)院’,’男’);EXECUTEPRC5(ssx=>’男’,sdt=>‘信息學(xué)院’)(3)創(chuàng)建一個存儲過程KCPRC,該存儲過程的功能是:當(dāng)傳遞一個學(xué)生的姓名時,顯示該學(xué)生的學(xué)號、選修的課程名和課程成績。=1\*GB3①執(zhí)行存儲過程KCPRC求‘自己的姓名’的學(xué)號,選修的課程名和成績3、創(chuàng)建帶有OUT參數(shù)的存儲過程(1)創(chuàng)建一個帶有返回參數(shù)的存儲過程PRC6:返回學(xué)生的總?cè)藬?shù)。(2)編程:調(diào)用存儲過程PRC6,并顯示學(xué)生的總?cè)藬?shù)。4、創(chuàng)建帶有INOUT參數(shù)的存儲過程(1)創(chuàng)建一個帶有INOUT參數(shù)的存儲過程PRC7:向PRC7傳遞一個學(xué)生姓名,返回該學(xué)生的“《數(shù)據(jù)庫》成績”(2)編程:調(diào)用存儲過程PRC7,傳遞學(xué)生姓名,求“自己的姓名”的數(shù)據(jù)庫成績,并顯示“自己姓名的數(shù)據(jù)庫成績。*5、創(chuàng)建帶參數(shù)的存儲過程PTST:通過參數(shù)向存儲過程傳遞一學(xué)生的姓名,把該學(xué)生的所有的成績加10分。調(diào)用PTST,把自己選修的所有成績加10分。6、執(zhí)行存儲過程(1)EXECUTE命令EXECUTEPRC1;(2)通過匿名塊執(zhí)行存儲過程PRC1、PRC2、PRC37、創(chuàng)建一個寫一帶有輸入?yún)?shù)的存儲過程proc1,更新特定學(xué)生(姓名)數(shù)據(jù)庫的成績,若該學(xué)生成績不合格,成績提升30%,若成績在60-90之間,成績提升10%,否則提升4%。注意包含異常處理。并寫出調(diào)用該存儲過程的兩種方法8、查看存儲過程KCPRC的定義9、刪除存儲過程PRC110、創(chuàng)建函數(shù)(1)創(chuàng)建一個函數(shù)f1:向函數(shù)傳遞一個學(xué)生姓名,返回該學(xué)生的平均成績(2)創(chuàng)建一個函數(shù)f12:向函數(shù)傳遞一個學(xué)生姓名,返回該學(xué)生的年齡11、調(diào)用函數(shù)(1)編程:調(diào)用函數(shù)f1,顯示張三的平均成績(2)編程:調(diào)用f12,顯示李四的年齡12、寫一帶有輸入?yún)?shù)的函數(shù)fun1,返回特定學(xué)號對應(yīng)的平均成績,注意包含異常處理。并寫出至少2種調(diào)用該函數(shù)的方法。13、查看函數(shù)f1、f12的定義 14、刪除函數(shù)f12四、實驗報告要求應(yīng)包含以下內(nèi)容:1、實驗名稱:本實驗項目的名稱。2、實驗?zāi)康模好枋鐾ㄟ^實驗要達到的結(jié)果。3、實驗內(nèi)容:描述實驗任務(wù)。4、實驗步驟:描述實驗步驟及中間的結(jié)果或現(xiàn)象。在實驗中做了什么事情,怎么做的,發(fā)生的現(xiàn)象和中間結(jié)果。5、實驗討論與總結(jié):說明實驗過程中遇到的問題及解決辦法;新發(fā)現(xiàn)或個人的收獲;未解決/需進一步研討的問題或建議新實驗方法等。實驗七觸發(fā)器一、實驗?zāi)康?、理解觸發(fā)器的概念;2、了解各類觸發(fā)器;3、掌握觸發(fā)器創(chuàng)建、刪除;4、掌握觸發(fā)器的使用。二、實驗內(nèi)容1、練習(xí)各類觸發(fā)器的創(chuàng)建方法2、練習(xí)使用觸發(fā)器的方法3、練習(xí)查看、刪除觸發(fā)器的方法三、實驗步驟以scott用戶登錄,并創(chuàng)建STUDENT,SC,COURSE表,并輸入相應(yīng)的記錄。1、創(chuàng)建DML觸發(fā)器TRG1(1)創(chuàng)建一個行級觸發(fā)器TRG1,基于STUDENT表,觸發(fā)時間為BEFORE,觸發(fā)事件:INSERT、DELETE和UPDATE,功能:執(zhí)行插入時顯示“該操作為插入”;執(zhí)行刪除時顯示:“該操作為刪除”;執(zhí)行修改時顯示:“該操作為修改”。(2)驗證觸發(fā)器的作用分別執(zhí)行INSERT、UPDATE、DELETE驗證觸發(fā)器是否起作用:(3)刪除觸發(fā)器TRG12、創(chuàng)建DML觸發(fā)器TRG2(1)創(chuàng)建一個行級觸發(fā)器trg2,基于SC表,觸發(fā)時間為BEFORE,觸發(fā)事件:UPDADTE(修改grade字段),觸發(fā)條件:當(dāng)修改成績<60時的成績才進行觸發(fā),功能:當(dāng)修改成績<60的學(xué)生成績時,顯示“不及格成績修改成功”。(2)驗證觸發(fā)器的作用首先查看SC中是否有GRADE<60 的記錄修改GRADE<60的記錄驗證觸發(fā)器是否起作用:修改GRADE>60的記錄驗證觸發(fā)器是否起作用:(3)記錄恢復(fù)ROLLBACK(3)刪除觸發(fā)器TRG23、創(chuàng)建DML觸發(fā)器TRG3(1)創(chuàng)建一個行級觸發(fā)器trg3,基于SC表,觸發(fā)時間為BEFORE,觸發(fā)事件:UPDADTE(記錄對成績的修改),當(dāng)修改成績<60時的成績才進行觸發(fā),功能:當(dāng)修改成績<60的學(xué)生成績時,把修改的信息存入成績修改日志表sc_log(該表中記錄了修改的用戶,修改前的成績和修改后的成績,修改的日期)。=1\*GB3①在用戶SCOTT下創(chuàng)建表SC_LOGCREATETABLESC_LOG(IDNUMBER(3)NOTNULL,WHOVARCHAR(8),MESSAGEVARCHAR(60),RQDATE);=2\*GB3②創(chuàng)建觸發(fā)器TRG3(2)驗證觸發(fā)器的作用首先查看SC中是否有GRADE<60 的記錄:修改GRADE<60的記錄驗證觸發(fā)器是否起作用:查看SC_LOG的信息:(3)記錄恢復(fù)ROLLBACK(4)刪除觸發(fā)器TRG34、創(chuàng)建DML觸發(fā)器TRG4(1)創(chuàng)建一個行級觸發(fā)器trg4,基于SC表,觸發(fā)時間為BEFORE,觸發(fā)事件:UPDADTE,功能:不得修改成績<60時的成績,當(dāng)修改成績<60的學(xué)生成績時,顯示“禁止修改不及格的成績,操作取消”(2)驗證觸發(fā)器的作用先查看SC中是否有GRADE<60 的記錄:修改GRADE<60的記錄驗證觸發(fā)器是否起作用:修改GRADE>60的記錄驗證觸發(fā)器是否起作用:(3)刪除觸發(fā)器TRG45、創(chuàng)建DML觸發(fā)器TRG5(1)創(chuàng)建一個級聯(lián)修改觸發(fā)器trg5,當(dāng)修改STUDENT中的學(xué)號時,SC表的學(xué)號也自動修改(2)驗證觸發(fā)器的作用查看STUDENT和SC表的數(shù)據(jù)。修改STUDENENT表的學(xué)號驗證觸發(fā)器是否起作用:(3)記錄恢復(fù)ROLLBACK(4)刪除觸發(fā)器TRG5*6、創(chuàng)建行級DML觸發(fā)器TRG6(1)創(chuàng)建一個INSERT觸發(fā)器trg6,當(dāng)向SC表中插入記錄時,如果插入的學(xué)號在STUDENT表中存在,顯示插入成功,否則取消該操作,并顯示提示:“禁止插入該記錄”。(2)向SC表中插入記錄驗證觸發(fā)器的作用。向SC表插入一個STUDENT中不存的學(xué)號的選課記錄向SC表插入一個STUDENT中存在的學(xué)號的選課記錄 7、創(chuàng)建DML語句級觸發(fā)器TRG7(1)創(chuàng)建一個語句級觸發(fā)器CHK_TIME,限定對表STUDENT的更新時間為周一至周五的早8點至晚5點,否則禁止更新。并顯示提示:“非法時間,禁止更新”,(2)驗證觸發(fā)器的作用首先修改系統(tǒng)的時間和日期改為:周末或晚5點之后,或早8點之前。分別執(zhí)行INSERT、UPDATE、DELETE驗證觸發(fā)器是否起作用:(3)刪除觸發(fā)器TRG78、創(chuàng)建DML數(shù)據(jù)庫級觸發(fā)器scttrg1(1)創(chuàng)建數(shù)據(jù)庫級觸發(fā)器scttrg1,專門記錄各賬戶的登錄時間:把各賬戶登錄的用戶名、時間記錄到表userlog里(userlog表包括:ID,用戶名,登錄時間三個字段)。=1\*GB3①首先在SCOTT下創(chuàng)建一個表userlog(記錄登錄信息的表)CREATETABLEuserlog(idnumber(3),USERNAMEVARCHAR2(20),LOGON_TIMEvarchar(20);=2\*GB3②創(chuàng)建觸發(fā)器SCTTRG1(2)驗證觸發(fā)器的作用執(zhí)行如下命令驗證觸發(fā)器是否起作用:=1\*GB3①使用SYS、SYSTEM、SCOTT三個賬戶分別登錄=2\*GB3②執(zhí)行:SELECT*FROMSCOTT.USERLOGorderbylogon_time(3)刪除觸發(fā)器SCCTRG19、創(chuàng)建DDL觸發(fā)器DLTRG1(1)創(chuàng)建一個觸發(fā)器DLTRG1,通過觸發(fā)器阻止對STUDENT表的刪除。(2)驗證觸發(fā)器的作用執(zhí)行如下命令驗證觸發(fā)器是否起作用:DROPTABLESTUDENT;(3)刪除觸發(fā)器DLTRG110、寫一個DML觸發(fā)器tri1,實現(xiàn)student表的同步備份并測試該觸發(fā)器功能。11、查看觸發(fā)器(1)查看各表上的觸發(fā)器(2)查看當(dāng)前用戶的觸發(fā)器(3)查看某觸發(fā)器INSTRG1的文本四、實驗報告要求應(yīng)包含以下內(nèi)容:1、實驗名稱:本實驗項目的名稱。2、實驗?zāi)康模好枋鐾ㄟ^實驗要達到的結(jié)果。3、實驗內(nèi)容:描述實驗任務(wù)。4、實驗步驟:描述實驗步驟及中間的結(jié)果或現(xiàn)象。在實驗中做了什么事情,怎么做的,發(fā)生的現(xiàn)象和中間結(jié)果。5、實驗討論與總結(jié):說明實驗過程中遇到的問題及解決辦法;新發(fā)現(xiàn)或個人的收獲;未解決/需進一步研討的問題或建議新實驗方法等。實驗八用戶的管理一、實驗?zāi)康?、理解數(shù)據(jù)庫用戶和角色的概念;2、掌握使用SQL語句創(chuàng)建用戶、角色3、理解權(quán)限的含義;4、了解權(quán)限的分類;5、掌握用戶的授權(quán)和回收權(quán)限;6、掌握角色的授權(quán)和回收權(quán)限;7、掌握用戶對象的授權(quán)和回收權(quán)限。二、實驗內(nèi)容1、練習(xí)創(chuàng)建、修改和刪除用戶;2、練習(xí)用戶的授權(quán)和回收權(quán)限;3、練習(xí)角色的創(chuàng)建、授權(quán)、回收權(quán)限和刪除;4、練習(xí)對象的授權(quán)和回收權(quán)限。三、實驗步驟1、使用SQL創(chuàng)建用戶(1)在CMD中用SYS用戶登錄到SQL*PLUS(2)創(chuàng)建用戶USER1:CONNECTSYS/Oracle11assysdbaCREATEUSERUSER1IDENTIFIEDby1234;執(zhí)行:CONNECTUSER1/1234;能執(zhí)行嗎?(3)創(chuàng)建用戶USER2CONNECTSYS/Oracle11assysdbaCREATEUSERUSER2IDENTIFIEDby1234PASSWORDEXPIRE執(zhí)行:CONNECTUSER2/1234;能執(zhí)行嗎?(4)創(chuàng)建用戶USER3CONNECTSYS/Oracle11assysdbaCREATEUSERUSER3IDENTIFIEDby1234ACCOUNTLOCK執(zhí)行:CONNECTUSER2/1234;能執(zhí)行嗎?(5)查詢用戶SELECTUSERNAMEFROMDBA_USERS2、使用SQL修改用戶(1)修改USER1的密碼CONNECTSYS/Oracle11assysdbaALTERUSERUSER1IDENTIFIEDBYoracle執(zhí)行:CONNECTUSER1/oracle;能執(zhí)行嗎?(2)修改用戶USER1的密碼過期CONNECTSYS/Oracle11assysdbaALTERUSERUSER1PASSWORDEXPIRE;執(zhí)行:CONNECTUSER1/oracle;能執(zhí)行嗎?(3)解除USER3的賬戶鎖定CONNECTSYS/Oracle11assysdbaALTERUSERUSER3accountUNLOCK執(zhí)行:CONNECTUSER3/1234;能執(zhí)行嗎?3、使用SQL刪除用戶USER3CONNECTSYS/Oracle11assysdbadropUSERUSER3執(zhí)行:CONNECTUSER3/1234;能執(zhí)行嗎?4、使用SQL授權(quán)(1)授予用戶USER1的connect權(quán)限CONNECTUSER1/1234;CONNECTSYS/Oracle11ASSYSDBA;GRANTCONNECTTOUSER1再執(zhí)行:CONNECTUSER1/1234;能執(zhí)行嗎?(2)授予用戶USER2登錄的權(quán)限,USER2并能把該權(quán)限授予其他人CONNECTUSER2/1234;CONNECTSYS/Oracle11ASSYSDBA;Createuseruser4IDENTIFIEDBY1234;GRANTCREATESESSIONTOUSER2WITHADMINOPTION再執(zhí)行:CONNECTUSER4/1234;能執(zhí)行嗎?再執(zhí)行:CONNECTUSER2/1234;;能執(zhí)行嗎?GRANTCREATESESSIONTOUSER4再執(zhí)行:CONNECTUSER4/1234;;能執(zhí)行嗎?(3)授予用戶USER4具有DBA的權(quán)限CONNECTSYS/Oracle11ASSYSDBA;GRANTconnect,resource,CREATEUSERTOUSER4CONNECTUSER4/1234;createUSERUSER5IDENTIFIEDBY1234;能執(zhí)行嗎?(4)查詢用戶USER1、USER2、USER4、USER5的權(quán)限select*fromdba_sys_privswheregrantee=‘用戶名’;5、使用SQL回收權(quán)限(1)把USER4的resource權(quán)限收回CONNECTSYS/Oracle11ASSYSDBA;REVOKECREATEUSERFROMUSER4;CONNECTUSER4/1234;執(zhí)行:createUSERUSER6IDENTIFIEDBY1234;能執(zhí)行嗎?6、使用SQL對對象權(quán)限的授權(quán)和回收(1)SCOTT用戶授予用戶USER1對表EMP的
查詢權(quán)限CONNECTUSER1/oracle;SELECT*FROMSCOTT.EMP;CONNECTSCOTT/tiger;GRANTSELECTONEMPTOUSER1;CONNECTUSER1/oracle;SELECT*FROMSCOTT.EMP;能執(zhí)行嗎?DELETEFROMSCOTT.EMP;能執(zhí)行嗎?(2)SCOTT把user1用戶對EMP的查詢權(quán)限收回CONNECTSCOTT/tiger;REVOKESELECTONempFROMUSER1;CONNECTUSER1/1234;SELECT*FROMSCOTT.EMP;能執(zhí)行嗎?7、角色的創(chuàng)建、授權(quán)和回收(1)創(chuàng)建角色:TESTROLECONNECTSYS/Oracle11ASSYSDBA;CREATEROLEtestrole;(2)把登錄的權(quán)限授予角色TESTROLE,把對SCOTT的表EMP的SELECT權(quán)限授予TESTROLEGRANT
CREATE
SESSION
TO
testrole
;GRANT
SELECT
ON
scott.emp
TO
testrole;(3)把RESOURCE和testrole授予用戶USER1GRANT
RESOURCE,testrole
TO
user1;查看USER1的權(quán)限:CONNECTUSER1/1234想想USER1用戶還能執(zhí)行哪些相應(yīng)權(quán)限的命令?(4)查詢testrole具有哪些權(quán)限SELECT*FROMDBA_SYS_PRIVSWHEREGRANTEE=角色名';(5)刪除角色testroleDROPROLEtestrole8、綜合練習(xí)(1)創(chuàng)建一用戶:自己的姓名(自己姓名拼音的第一個字母)(2)授予該用戶連接權(quán)限(3)把Scott用戶下的對student表的查詢和修改權(quán)限授予該用戶。(4)以該用戶用戶登錄,執(zhí)行SELECT、INSERT、UPDATE、DELETE命令,查看有哪些命令能執(zhí)行,為什么?四、實驗報告要求應(yīng)包含以下內(nèi)容:1、實驗名稱:本實驗項目的名稱。2、實驗?zāi)康模好枋鐾ㄟ^實驗要達到的結(jié)果。3、實驗內(nèi)容:描述實驗任務(wù)。4、實驗步驟:描述實驗步驟及中間的結(jié)果或現(xiàn)象。在實驗中做了什么事情,怎么做的,發(fā)生的現(xiàn)象和中間結(jié)果。5、實驗討論與總結(jié):說明實驗過程中遇到的問題及解決辦法;新發(fā)現(xiàn)或個人的收獲;未解決/需進一步研討的問題或建議新實驗方法等。實驗九數(shù)據(jù)庫應(yīng)用一、實驗?zāi)康恼莆諗?shù)據(jù)庫的設(shè)計方法,根據(jù)具體的應(yīng)用問題設(shè)計一個數(shù)據(jù)庫:1、復(fù)習(xí)和鞏固數(shù)據(jù)庫的基礎(chǔ)知識,進一步加深對數(shù)據(jù)庫的理解。通過該實驗,熟悉Oracle數(shù)據(jù)庫設(shè)計的方法。2、為學(xué)生提供一個既動手又動腦,獨立實踐的機會,將課本所學(xué)的理論知識和實踐相結(jié)合,鍛煉學(xué)生的分析問題和解決實際問題的能力,提高動手實踐能力。3、培養(yǎng)學(xué)生自主探究和學(xué)
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年停車場車位共有權(quán)協(xié)議書
- 2025年供水合作協(xié)議書標(biāo)準(zhǔn)示例
- 2025年光盤大量復(fù)制服務(wù)協(xié)議書樣本
- 2025年品質(zhì)策劃服務(wù)合作協(xié)議
- 2025年合作伙伴電子產(chǎn)品租賃協(xié)議
- 2025年臨時銷售人員雇傭合同示例
- 2025年競業(yè)禁止協(xié)議策劃與風(fēng)險防控
- 2025年辦公沙發(fā)銷售合同格式
- 2025年式電動自行車購買合同示例
- 2025年共同解除婚姻協(xié)議指導(dǎo)文本
- 《堅毅:釋放激情與堅持的力量》隨筆
- 區(qū)塊鏈應(yīng)用操作員技能大賽考試題庫大全-下(多選、判斷題)
- 二 《“友邦驚詫”論》(同步練習(xí))解析版
- 數(shù)據(jù)中心基礎(chǔ)設(shè)施管理考核試卷
- 施工技術(shù)交底(電氣安裝)
- TB-T 3263.1-2023 動車組座椅 第1部分:一等座椅和二等座椅
- 部編版五年級下冊語文1-8單元習(xí)作課件
- 勞工及道德體系法律法規(guī)清單
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及參考答案
- 初中地理實驗設(shè)計
- 2024年云南昆明市八年級數(shù)學(xué)第二學(xué)期期末統(tǒng)考試題含解析
評論
0/150
提交評論