2023年新版數(shù)據(jù)庫(kù)概論實(shí)驗(yàn)報(bào)告書(shū)_第1頁(yè)
2023年新版數(shù)據(jù)庫(kù)概論實(shí)驗(yàn)報(bào)告書(shū)_第2頁(yè)
2023年新版數(shù)據(jù)庫(kù)概論實(shí)驗(yàn)報(bào)告書(shū)_第3頁(yè)
2023年新版數(shù)據(jù)庫(kù)概論實(shí)驗(yàn)報(bào)告書(shū)_第4頁(yè)
2023年新版數(shù)據(jù)庫(kù)概論實(shí)驗(yàn)報(bào)告書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)報(bào)告書(shū)專業(yè)班級(jí)網(wǎng)134學(xué)號(hào)姓名云飛指導(dǎo)教師周兵安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí)驗(yàn)一:數(shù)據(jù)定義語(yǔ)言[實(shí)驗(yàn)日期]年月日[實(shí)驗(yàn)?zāi)康腯熟悉Oracle上機(jī)環(huán)境及Oracle客戶端的配置;純熟掌握和使用DDL語(yǔ)言,建立、修改和刪除數(shù)據(jù)庫(kù)表、主鍵、外鍵約束關(guān)系和索引。[實(shí)驗(yàn)內(nèi)容]Oracle上機(jī)環(huán)境以及Oracle客戶端的配置參見(jiàn)附錄。1.SQL數(shù)據(jù)定義語(yǔ)句:例1-1:(建立數(shù)據(jù)庫(kù)表)建立教學(xué)數(shù)據(jù)庫(kù)的四個(gè)數(shù)據(jù)庫(kù)表,其中Student表中不包含SSEX(C,2)字段,Sname字段為Sname(C,8)且可為空。CREATETABLEStudent(SNOCHAR(5),SNAMECHAR(10)NULL,SDEPTCHAR(2),SCLASSCHAR(2),SAGENUMBER(2),CONSTRAINTSON_PKPRIMARYKEY(SNO));CREATETABLECourse(CNOCHAR(3),CNAMEVARCHAR2(16),CTIMENUMBER(3),CONSTRAINTCNO_PKPRIMARYKEY(CNO));CREATETABLETeach(TNAMECHAR(8),TSEXCHAR(2),CNOCHAR(3),TDATEDATE,TDEPTCHAR(2),CONSTRAINTTT_PKPRIMARYKEY(TNAME,CNO,TDEPT),CONSTRAINTCNO_FKFOREIGNKEY(CNO)REFERENCESCourse(CNO));CREATETABLEScore(SNOCHAR(5),CNOCHAR(3),SCORENUMBER(5,2),CONSTRAINTSC_PKPRIMARYKEY(SNO,CNO),CONSTRAINTCNO1_FKFOREIGNKEY(CNO)REFERENCESCourse(CNO),CONSTRAINTSNO_FKFOREIGNKEY(SNO)REFERENCESStudent(SNO));(Score表中定義外鍵的名稱不能為CNO,被Teach表中約束條件占用)例1-2:(修改數(shù)據(jù)庫(kù)表)在Student表中增長(zhǎng)SEX(C,2)字段。ALTERTABLEStudentADDSEXCHAR(2);例1-3:(修改列名)將Student表中列名SEX修改為SSEX。ALTERTABLEStudentRENAMECOLUMNSEXTOSSEX;例1-4:(修改數(shù)據(jù)庫(kù)表)將Student表中把Sname字段修改為Sname(C,10)且為非空。ALTERTABLEStudentMODIFYSNAMECHAR(10)NOTNULL;例1-5:(建立索引)為Score表按課程號(hào)升序、分?jǐn)?shù)降序建立索引,索引名為SC_GRADE。 CREATEUNIQUEINDEXSC_GRADEONScore(CNOASC,SCOREDESC);例1-6:(刪除索引)刪除索引SC_GRADE。DROPINDEXSC_GRADE;例1-7:(建立數(shù)據(jù)庫(kù)表)建立數(shù)據(jù)庫(kù)表S1(SNO,SNAME,SD,SA),其字段類型定義與Student表中的相應(yīng)字段(SNO,SNAME,SDEPT,SAGE)的數(shù)據(jù)類型定義相同。CREATETABLES1(SNOCHAR(5)PRIMARYKEYNOTNULL,SNAMECHAR(10),SDCHAR(2),SANUMBER(2));createtableS1as(selectSNO,SNAME,SDEPTasSD,SAGEasSAfromStudentwhere1=2);例1-8:(修改數(shù)據(jù)庫(kù)表)刪除成績(jī)表Score的參照完整性約束關(guān)系。ALTERTABLEScoreDROPCONSTARINTSNO_FK;ALTERTABLEScoreDROPCONSTARINTCNO1_FK;例1-9:(修改數(shù)據(jù)庫(kù)表)添加成績(jī)表Score的參照完整性約束關(guān)系。ALTERTABLESCOREADDCONSTRAINTCNO1_FKFOREIGNKEY(CNO)REFERENCESCourse(CNO);ALTERTABLESCOREADDCONSTRAINTSNO_FKFOREIGNKEY(SNO)REFERENCESStudent(SNO));例1-10:(修改數(shù)據(jù)庫(kù)表名)將數(shù)據(jù)庫(kù)表S1改名為Student_Temp。RENAMES1TOStudent_Temp;[實(shí)驗(yàn)規(guī)定]①熟悉Oracle上機(jī)環(huán)境,掌握Oracle客戶端的配置;?②建立數(shù)據(jù)庫(kù)表,修改數(shù)據(jù)庫(kù)表結(jié)構(gòu),建立、刪除索引;[實(shí)驗(yàn)方法]①按照附錄中的操作環(huán)節(jié)進(jìn)行客戶端的配置;

②將實(shí)驗(yàn)需求用SQL語(yǔ)句表達(dá);?③執(zhí)行SQL語(yǔ)句;?④查看執(zhí)行結(jié)果,假如結(jié)果不對(duì)的,進(jìn)行修改,直到對(duì)的為止。[實(shí)驗(yàn)總結(jié)]①SQL語(yǔ)句以及執(zhí)行結(jié)果;?②對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析;?③實(shí)驗(yàn)中的問(wèn)題和提高;?④收獲與體會(huì);實(shí)驗(yàn)心得:從這個(gè)實(shí)驗(yàn)中我學(xué)會(huì)了表的建立,內(nèi)部一些格式的修改,在開(kāi)始的時(shí)候我認(rèn)為十分麻煩,但是隨著我接觸的多了,我感到有些代碼都是相似的,找到相關(guān)的關(guān)聯(lián),就可以事半功倍。尚有就是我發(fā)現(xiàn)許多表之間存在著聯(lián)系,所以我要抓住互相的聯(lián)系,才干更好的發(fā)揮數(shù)據(jù)語(yǔ)言的作用。實(shí)驗(yàn)二:數(shù)據(jù)操縱語(yǔ)言[實(shí)驗(yàn)日期]年月日[實(shí)驗(yàn)?zāi)康腯在實(shí)驗(yàn)一的基礎(chǔ)上,純熟掌握和使用DML語(yǔ)言,對(duì)數(shù)據(jù)進(jìn)行增長(zhǎng)、修改和刪除操作。[實(shí)驗(yàn)內(nèi)容]2.SQL數(shù)據(jù)操縱語(yǔ)句:例2-1:(插入數(shù)據(jù))按前面各表中的數(shù)據(jù)分別插入到教學(xué)數(shù)據(jù)庫(kù)的四個(gè)數(shù)據(jù)庫(kù)表中。例2-2:(多行插入)將表Student中在計(jì)算機(jī)系(‘CS’)的學(xué)生數(shù)據(jù)插入到表Student_Temp中。INSERTINTOStudent_Temp(SNO,SNAME,SD,SA)SELECTSNO,SNAME,SDEPT,SAGEFROMSTUDENTWHERESDEPT='CS';(以上操作中,注意用COMMIT提交數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)服務(wù)器)例2-3:(運(yùn)用查詢來(lái)實(shí)現(xiàn)表的定義與數(shù)據(jù)插入)求每一個(gè)學(xué)生的平均成績(jī),把結(jié)果存入數(shù)據(jù)庫(kù)表Student_Gr中。CREATETABLEStudent_Gr(SNOCHAR(10),SAVGNUMBER(5,2));INSERTINTOStudent_Gr(SNO,SAVG)SELECTSNO,AVG(Score)FROMScoreGROUPBYSNO;(creat(yī)etableStudent_Gras(selectSNO,AVG(SCORE)fromScoregroupbySNO);)例2-4:(修改數(shù)據(jù))將Student_Temp表中所有學(xué)生的年齡加2。UPDATEStudent_TempSETSA=SA+2;例2-5:(修改數(shù)據(jù))將Course表中‘程序設(shè)計(jì)’課時(shí)數(shù)修改成與‘?dāng)?shù)據(jù)結(jié)構(gòu)’的課時(shí)數(shù)相同。UPDATECourseSETCTIME=(SELECTCTIMEFROMCourseWHERECNO='004')WHERECNO='008';例2-6:(插入數(shù)據(jù))向Score表中插入數(shù)據(jù)(‘98001’,‘001’,95),根據(jù)返回信息解釋其因素。INSERTINTOSCOREVALUES('98001','001',95);插入的數(shù)據(jù)假如某個(gè)字段是外鍵那么該值要么為空要么在主鍵表中有相應(yīng)的主鍵值,否則就不滿足參照完整性約,Score表中的SNO字段是根據(jù)Student中的SNO建立的,然而Student中的SNO中沒(méi)有98001。例2-7:(插入數(shù)據(jù))向Score表中插入數(shù)據(jù)(‘97001’,‘010’,80),根據(jù)返回信息解釋其因素。INSERTINTOSCOREVALUES('97001','010',85);由于Score表中的CNO字段是根據(jù)Course中的CNO建立的,Course表中并沒(méi)有課程號(hào)是010的。例2-8:(刪除數(shù)據(jù))刪除Student表中學(xué)號(hào)為‘96001’的學(xué)生信息,根據(jù)返回信息解釋其因素。DELETEFROMStudentWHERESNO='96001';由于Student表中學(xué)號(hào)已經(jīng)被別的表作為外鍵,不可以被刪除,違反完整約束條件例2-9:(刪除數(shù)據(jù))刪除Course表中課程號(hào)為‘003’的課程信息,根據(jù)返回信息解釋其因素。DELETEFROMCOURSEWHERECNO='003';由于Course表中課程號(hào)已經(jīng)被別的表作為外鍵,不可以被刪除,違反完整約束條件。例2-10:(刪除數(shù)據(jù))刪除學(xué)生表Student_Temp中學(xué)號(hào)以96打頭的學(xué)生信息。DELETEFROMStudent_TempWHERESNOLIKE'96%';(此操作后,注意用ROLLBACK回退也許更新的數(shù)據(jù))例2-11:(刪除數(shù)據(jù))刪除數(shù)據(jù)庫(kù)表Student_Temp中所有學(xué)生的數(shù)據(jù)。DELETEFROMStudent_TempWHERE2!=0;(此處的條件語(yǔ)句為真即可,例如2=2)例2-12:(刪除表)刪除數(shù)據(jù)庫(kù)表Student_Temp和Student_Gr。DROPTABLEStudent_Temp;DROPTABLEStudent_Gr;[實(shí)驗(yàn)規(guī)定]對(duì)數(shù)據(jù)庫(kù)表進(jìn)行插入、修改和刪除數(shù)據(jù)的操作。[實(shí)驗(yàn)方法]①按照附錄中的操作環(huán)節(jié)進(jìn)行客戶端的配置;

②將實(shí)驗(yàn)需求用SQL語(yǔ)句表達(dá);③執(zhí)行SQL語(yǔ)句;

④查看執(zhí)行結(jié)果,假如結(jié)果不對(duì)的,進(jìn)行修改,直到對(duì)的為止。[實(shí)驗(yàn)總結(jié)]SQL語(yǔ)句以及執(zhí)行結(jié)果;對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析;實(shí)驗(yàn)中的問(wèn)題和提高;收獲與體會(huì)。實(shí)驗(yàn)心得:感覺(jué)實(shí)驗(yàn)2是對(duì)實(shí)驗(yàn)1的補(bǔ)充,實(shí)驗(yàn)2需要掌握的是對(duì)內(nèi)部數(shù)據(jù)的修改和刪除一些不必要的表。通過(guò)實(shí)驗(yàn),我發(fā)現(xiàn)有些東西不是想刪除就可以刪除的,他們存在著完整約束條件,所以不可以實(shí)現(xiàn)那個(gè)操作。在發(fā)生了這個(gè)問(wèn)題時(shí),需要的是認(rèn)真思考,找到問(wèn)題的根源,這樣既可以解決問(wèn)題,也能都理解問(wèn)題的本質(zhì)因素,可以更好地幫助我的學(xué)習(xí),非常不錯(cuò)!實(shí)驗(yàn)三:數(shù)據(jù)查詢語(yǔ)言[實(shí)驗(yàn)日期]年月日[實(shí)驗(yàn)?zāi)康腯體會(huì)SQL語(yǔ)言數(shù)據(jù)查詢功能的豐富和復(fù)雜。[實(shí)驗(yàn)內(nèi)容]3.SQL數(shù)據(jù)查詢語(yǔ)句:例3-1:(選擇表中的若干列)求全體學(xué)生的學(xué)號(hào)、姓名、性別和年齡。SELECTSNO,SNAME,SSEX,SAGEFROMStudent;例3-2:(不選擇反復(fù)行)求選修了課程的學(xué)生學(xué)號(hào)。SELECTDISTINCTSNOFROMScoreWHERECNOISNOTNULL;例3-3:(選擇表中的所有列)求全體學(xué)生的具體信息。??SELECT*FROMStudent;例3-4:(使用表達(dá)式)求全體學(xué)生的學(xué)號(hào)、姓名和出生年份。 ?SELECTSNO,SNAME,2023-SAGEAS"出生年份"FROMStudent;例3-5:(使用列的別名)求學(xué)生的學(xué)號(hào)和出生年份,顯示時(shí)使用別名“學(xué)號(hào)”和“出生年份”。???SELECTSNOAS"學(xué)號(hào)",2023-SAGEAS"出生年份"FROMStudent;例3-6:(比較大小條件)求年齡大于19歲的學(xué)生的姓名和年齡。 ?SELECTSNAME,SAGEFROMStudentWHERESAGE>19;例3-7:(比較大小條件)求計(jì)算機(jī)系或信息系年齡大于18歲的學(xué)生的姓名、系和年齡。 SELECTSNAME,SDEPT,SAGEFROMStudentWHERESDEPT='CS'ANDSAGE>18;例3-8:(擬定范圍條件)求年齡在19歲與22歲(含20歲和22歲)之間的學(xué)生的學(xué)號(hào)和年齡。??SELECTSNO,SAGEFROMStudentWHERESAGEBETWEEN20AND22;例3-9:(擬定范圍條件)求年齡不在19歲與22歲之間的學(xué)生的學(xué)號(hào)和年齡。? SELECTSNO,SAGEFROMStudentWHERESAGENOTBETWEEN19AND22;例3-10:(擬定集合條件)求在下列各系的學(xué)生信息:數(shù)學(xué)系、計(jì)算機(jī)系SELECT*FROMStudentWHERESDEPTIN('MA','CS');例3-11:(擬定集合條件)求不是數(shù)學(xué)系、計(jì)算機(jī)系的學(xué)生信息。SELECT*FROMStudentWHERESDEPTNOTIN('MA','CS');例3-12:(匹配查詢)求姓名是以“李”打頭的學(xué)生。 SELECT*FROMStudentWHERESNAMELIKE'李%';例3-13:(匹配查詢)求姓名中具有“志”的學(xué)生。 ?SELECT*FROMStudentWHERESNAMELIKE'%志%';例3-14:(匹配查詢)求姓名長(zhǎng)度至少是三個(gè)漢字且倒數(shù)第三個(gè)漢字必須是“馬”的學(xué)生。 SELECT*FROMStudentWHERESNAMELIKE'%馬__';(未解決)例3-15:(匹配查詢)求選修課程001或003,成績(jī)?cè)?0至90之間,學(xué)號(hào)為96xxx的學(xué)生的學(xué)號(hào)、課程號(hào)和成績(jī)。 ?SELECTSNO,CNO,SCOREFROMScoreWHERECNOIN('001','003')ANDSCOREBETWEEN80AND90ANDSNOLIKE'96%';例3-16:(匹配查詢)求課程名中包含’_’字符的課程號(hào)、課程名和學(xué)時(shí)數(shù)。? SELECTCNO,CNAME,CTIMEFROMCourseWHERECNAMELIKE'%\_%'ESCAPE'\';(point)例3-17:(涉及空值查詢)求缺少學(xué)習(xí)成績(jī)的學(xué)生的學(xué)號(hào)和課程號(hào)。 ?SELECTSNO,CNOFROMScoreWHERESCOREISNULL;例3-18:(控制行的顯示順序)求選修003課程或004課程的學(xué)生的學(xué)號(hào)、課程號(hào)和分?jǐn)?shù),規(guī)定按課程號(hào)升序、分?jǐn)?shù)降序的順序顯示結(jié)果。? SELECT*FROMScoreWHERECNOIN('003','004')ORDERBYCNO,SCOREDESC;例3-19:(組函數(shù))求學(xué)生總?cè)藬?shù)。 ?SELECTCOUNT(*)FROMStudent;例3-20:(組函數(shù))求選修了課程的學(xué)生人數(shù)。 SELECTCOUNT(DISTINCTSNO)FROMScore;例3-21:(組函數(shù))求計(jì)算機(jī)系學(xué)生的平均年齡。 SELECTAVG(SAGE)FROMStudentWHERESDEPT='CS';例3-22:(組函數(shù))求選修了課程001的最高、最低與平均成績(jī)。??SELECTMAX(SCORE),MIN(SCORE),AVG(SCORE)FROMScoreWHERECNO='001';例3-23:(分組查詢)求各門(mén)課程的平均成績(jī)與總成績(jī)。? SELECTAVG(SCORE),SUM(SCORE)FROMScoreGROUPBYCNO;例3-24:(分組查詢)求各系、各班級(jí)的人數(shù)和平均年齡。 ?SELECTCOUNT(SNO),AVG(SAGE)FROMStudentGROUPBYSDEPT,SCLASS;例3-25:(分組查詢)輸入以下查詢語(yǔ)句并執(zhí)行,觀測(cè)出現(xiàn)的其結(jié)果并分析其因素.SELECTSNAME,SDEPT,COUNT(*)FROMSTUDENTWHERESDEPT=’CS’GROUPBYSDEPT;??SELECT列表項(xiàng)中不存在的列可以出現(xiàn)在GROUPBY的列表項(xiàng)中,但是SELECT列表中出現(xiàn)的GROUPBY里必須有。此處SNAME未出現(xiàn)在GROUPBY中;例3-26:(分組查詢)分析以下語(yǔ)句為什么會(huì)出現(xiàn)錯(cuò)誤。并給出對(duì)的的查詢語(yǔ)句。SELECTSAGEFROMSTUDENTGROUPBYSNO;??SELECT列表項(xiàng)中不存在的列可以出現(xiàn)在GROUPBY的列表項(xiàng)中,但是SELECT列表中出現(xiàn)的GROUPBY里必須有。此處SAGE未出現(xiàn)在GROUPBY中;例3-27:(分組查詢)求學(xué)生人數(shù)局限性3人的系及其相應(yīng)的學(xué)生數(shù)。? SELECTSDEPT,COUNT(SNO)FROMStudentGROUPBYSDEPTHAVINGCOUNT(SNO)<3;例3-28:(分組查詢)求各系中除01班之外的各班的學(xué)生人數(shù)。 ?SELECTSDEPT,SCLASS,COUNT(SNO)FROMStudentGROUPBYSDEPT,SCLASSHAVINGSCLASS!='01';(POINT)例3-29:(涉及空值的查詢)分別觀測(cè)各組函數(shù)、行的顯示順序以及分組查詢與空值的關(guān)系。? selectCOUNT(SCORE)fromScore;selectSUM(SCORE)fromScore;selectAVG(SCORE)fromScore;selectMAX(SCORE)fromScore;selectMIN(SCORE)fromScore;selectSCOREfromScoregroupbySCOREasc;selectSCOREfromScoregroupbySCOREdesc;例3-30:(連接查詢)求選修了課程001且成績(jī)?cè)冢?分以下或成績(jī)?cè)?0分以上的學(xué)生的姓名、課程名稱和成績(jī)。 SELECTSANME,,CNAME,SCOREFROMStudent,Course,Score,WHEREScore.CNO='001'AND(SCORE>90ORSCORE<70)ANDCourse.CNO=Score.CNOANDStudent.SNO=Score.SNO;例3-31:(連接查詢與表的別名)求選修了課程的學(xué)生的學(xué)生姓名、課程號(hào)和成績(jī)。 ?SELECTSNAME,CNO,SCOREFROMStudent,ScoreWHEREStudent.SNO=Score.SNO;例3-32:(自身連接查詢)求年齡大于’李麗’的所有學(xué)生的姓名、系和年齡。 SELECTX.SNAME,X.SDEPT,X.SAGEFROMStudentX,StudentYWHEREX.SAGE>Y.SAGEANDY.SNAME=’李麗’;例3-33:(外部連接查詢)求選修了課程002或003的學(xué)生的學(xué)號(hào)、課程號(hào)、課程名和成績(jī),規(guī)定必須將002和003課程的相關(guān)信息顯示出來(lái)。??SELECTScore.SNO,Score.CNO,Course.CNAME,SCORE,CTIMEFROMCourse,ScoreWHERECourse.CNOIN(‘002’,’003’)ANDScore.CNO=Course.CNO(+);例3-34:(子查詢)求與‘黎明’年齡相同的學(xué)生的姓名和系。 ?SELECTSNAME,SDEPTFROMStudentWHERESAGEIN(SELECTSAGEFROMStudentWHERESNAME)=‘黎明’);例3-35:(子查詢)求選修了課程名為’數(shù)據(jù)結(jié)構(gòu)’的學(xué)生的學(xué)號(hào)和姓名。??SELECTSNO,SNAMEFROMStudentWHERESNOIN(SELECTSNOFROMScoreWHERECNO=(SELECTCNOFROMCourseWHERECNAME=’數(shù)據(jù)結(jié)構(gòu)’))例3-36:(子查詢ANY)求比數(shù)學(xué)系中某一學(xué)生年齡大的學(xué)生的姓名和系。? SELECTSANMESDEPTFROMStudentWHERESAGE>ANY(SELECTSAGEFROMStudentWHERESDEPT=’MA’)ANDSDEPT<>’MA’;例3-37:(子查詢ALL)求比數(shù)學(xué)系中全體學(xué)生年齡大的學(xué)生的姓名和系。??SELECTSNAME,SDEPTFROMStudentWHERESAGE>ALL(SELECTSAGEFROMStudentWHERESDEPT=’MA’)ANDSDEPT<>’MA’;例3-38:(子查詢EXISTS)求選修了課程004的學(xué)生的姓名和系。? SELECTSNAME,SDEPTFROMStudentWHEREEXISTS(SELECT*FROMScoreWHERECNO=’004’ANDSNO=Student,SNO);例3-39:(返回多列的子查詢)求與‘黎明’同系且同齡的學(xué)生的姓名和系。??SELECTSNAME,SDEPTFROMStudentWHERESDEPT=(SELECTSDEPTFROMStudentWHERESNAME=’黎明’)ANDSAGE=(SELECTSAGEFROMStudentWHERESNAME=’黎明’);(單行子查詢返回多個(gè)行,由于Student表中有兩名學(xué)生叫黎明)例3-40:(多個(gè)子查詢)求與‘‘黎明’同系,且年齡大于‘李麗’的學(xué)生的信息。 ?SELECT*FROMStudentWHERESDEPT=(SELECTSDEPTFROMStudentWHERESNAME=’黎明’)ANDSAGE>(SELECTSAGEFORMStudentWHERESANME=’李麗’);(point)例3-41:(子查詢中使用表連接)求數(shù)學(xué)系中年齡相同的學(xué)生的姓名和年齡。 ?SELECTX.SNAME,X.SAGEFROMStudentX,StudentYWHEREX,SAGE=Y.SAGEANDX.SDEPT=’MA’ANDY.SDEPT=’MA’ANDX.SNO<>Y.SNO;例3-42:(連接或嵌套查詢)檢索至少選修王成剛老師所授課程中一門(mén)課程的女學(xué)生姓名。??SELECTSNAMEFROMStudentWHERESNOIN(SELECTSNOFROMScoreWHERECNOIN(SELECTCNOFROMTeachWHERETNAME=’王成剛’))例3-43:(嵌套與分組查詢)檢索選修某課程的學(xué)生人數(shù)多于3人的教師姓名。? SELECTTNAMEFROMTeachWHRERECNOIN(SELECTCNOFROMScoreGROUPBYCNOHAVING3<COUNT(SNO));例3-44:(集合查詢)列出所有教師和同學(xué)的姓名和性別。??SELECTSANME,SSEXFROMStudentUNIONSELECTTNAMETSEXFROMTeach;例3-45:(相關(guān)子查詢)求未選修課程004的學(xué)生的姓名。 ?SELECTSNAMEFROMStudentWHERESNONOTIN(SELECTSNOFROMScoreWHRERCNO=’004’);例3-46:(相關(guān)子查詢)求選修了所有課程的學(xué)生的姓名。 ?SELECTSNAMEFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMScoreWHERESNO=Student.SNOANDCNO=Course.CNO));例3-47:(相關(guān)子查詢)求至少選修了學(xué)生‘96002’所選修的所有課程的學(xué)生的學(xué)號(hào)。 SELECTDISTINCTSNOFROMScoreSC1WHERENOEXISTS(SELECT*FROMScoreSC2WHERESC1.SNO=’96002’ANDNOEXISTS(SELECT*FROMScoreSC3WHERESNO=SC1.SNOANDCNO=SC2.CNO));例3-48:(相關(guān)子查詢)求成績(jī)比所選修課程平均成績(jī)高的學(xué)生的學(xué)號(hào)、課程號(hào)、和成績(jī)。??SELECTSNOCNO.SCOREFROMScoreSC1WHEREEXTSTS(SELECT*FROMScoreSC2GROUPBYCNOHAVINGSC1.SCORE>AVG(SCORE)ANDCNO=SC1.CNO)例3-49:(相關(guān)子查詢)查詢被一個(gè)以上的學(xué)生選修的課程號(hào)。 SELECTCNOFROMCourseWHEREEXISTS(SELECT*FROMScoreGROUPBYCNOHAVINGCOUNT(SNO)>1ANDCNO=Course.CNO);例3-50:(相關(guān)子查詢)查詢所有未選課程的學(xué)生姓名和所在系.?SELECTSNAME,SDEPTFROMStudentWHERENOTEXISTS(SELECT*FROMScoreWHERESNO=Student.SNO);[實(shí)驗(yàn)規(guī)定]對(duì)數(shù)據(jù)庫(kù)表進(jìn)行各種查詢操作。[實(shí)驗(yàn)方法]①將實(shí)驗(yàn)需求用SQL語(yǔ)句表達(dá);

②執(zhí)行SQL語(yǔ)句;?③查看執(zhí)行結(jié)果,假如結(jié)果不對(duì)的,進(jìn)行修改,直到對(duì)的為止。[實(shí)驗(yàn)總結(jié)]①SQL語(yǔ)句以及執(zhí)行結(jié)果;

②對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析;?③實(shí)驗(yàn)中的問(wèn)題和提高;?④收獲與體會(huì)。心得體會(huì):實(shí)驗(yàn)3是很重要的知識(shí)點(diǎn),用了50個(gè)例子向我一一解釋了各種查詢數(shù)據(jù),其中涉及子查詢,雙重嵌套,三重嵌套,開(kāi)始的時(shí)候?qū)W習(xí)感覺(jué)十分吃力,很多東西都繞在一起,但是學(xué)習(xí)這個(gè)要耐心,理解問(wèn)題的關(guān)鍵字,理解每句語(yǔ)句的含義,例如在嵌套中要理解每重嵌套的作用,找到關(guān)鍵字的位置,并理解他的作用。尚有一些沒(méi)有弄懂的可以網(wǎng)上百度一下,查閱一些資料。這樣才會(huì)弄懂問(wèn)題的本質(zhì)。要有耐心,才干學(xué)好這一章,。

實(shí)驗(yàn)四:視圖、授權(quán)控制與事務(wù)解決[實(shí)驗(yàn)日期]年月日[實(shí)驗(yàn)?zāi)康腯通過(guò)實(shí)驗(yàn)進(jìn)一步理解視圖的建立和更新、數(shù)據(jù)庫(kù)的權(quán)限管理和事務(wù)解決功能。[實(shí)驗(yàn)內(nèi)容]4.SQL視圖的定義與操縱:例4-1:(建立視圖)建立計(jì)算機(jī)系的學(xué)生的視圖STUDENT_CS。??createviewSTUDENT_CSasselect*fromStudentwhereSDEPT='CS';例4-2:(建立視圖)建立由學(xué)號(hào)和平均成績(jī)兩個(gè)字段的視圖STUDENT_GR. createviewSTUDENT_GR(SNO,AG)asselectSNO,AVG(SCORE)agfromScoregroupbySNO;例4-3:(視圖查詢)運(yùn)用視圖STUDENT_CS,求年齡大于19歲的學(xué)生的所有信息。? select*fromSTUDENT_CSwhereSAGE>19;例4-4:(視圖查詢)運(yùn)用視圖STUDENT_GR,求平均成績(jī)?yōu)椋?分以上的學(xué)生的學(xué)號(hào)和平均成績(jī)。 selectSNO,AGfromSTUDENT_GRwhereAG>88;例4-5:(視圖更新)運(yùn)用視圖STUDENT_CS,增長(zhǎng)學(xué)生(‘96006’,‘張然’,‘CS’,‘02’,‘男’,19)。? insertintoSTUDENT_CSvalues('96006','張然','CS','02','男',19);例4-6:(視圖更新)運(yùn)用視圖STUDENT_CS,將學(xué)生年齡增長(zhǎng)1歲。觀測(cè)其運(yùn)營(yíng)結(jié)果并分析因素。updateSTUDENT_CSsetSAGE=SAGE+1;例4-7:(視圖更新)運(yùn)用視圖STUDENT_GR,將平均成績(jī)?cè)鲩L(zhǎng)2分。觀測(cè)其運(yùn)營(yíng)結(jié)果并分析因素。 updateSTUDENT_GRsetAG=AG+2;例4-8:(視圖更新)刪除視圖STUDENT_CS中學(xué)號(hào)為‘96006’的學(xué)生的所有數(shù)據(jù)。? deletefromSTUDENT_CSwhereSNO='96006';例4-9:(視圖更新)刪除視圖STUDENT_GR的所有數(shù)據(jù)。deletefromSTUDENT_GR;例4-10:(刪除視圖)刪除視圖STUDENT_CS和STUDENT_GR。dropviewSTUDENT_CS;dropviewSTUDENT_GR;5.SQL數(shù)據(jù)控制語(yǔ)句:例5-1:(授權(quán))給左右鄰近同學(xué)(用戶)授予在表Student上的SELECT權(quán)限,并使這兩個(gè)用戶具有給其他用戶授予相同權(quán)限的權(quán)限。 grantselectonStudenttoU,Uwithgrantoption;例5-2:(授權(quán))給鄰近同學(xué)(用戶)授予Teach表上的所有權(quán)限。 ?grantallonTeachtoU,U例5-3:(授權(quán))給所有用戶授予Score表上的SELECT權(quán)限。grantselectonScoretopublic;例5-4:(授權(quán)驗(yàn)證)觀測(cè)左右鄰近同學(xué)查詢你所授權(quán)的表中的內(nèi)容。例5-5:(收回授權(quán))收回上面例子中的所有授予的權(quán)限。 revokeselectonStudentfromU,U;revokeallonTeachfromU,U;revokeselectonScorefrompublic;6.SQL事務(wù)解決:例6-1:(事務(wù)回退)將課程名稱表中的‘程序設(shè)計(jì)’課程學(xué)時(shí)數(shù)修改為80、‘微機(jī)原理’課程學(xué)時(shí)數(shù)修改為70學(xué)時(shí),查詢所有課程的總學(xué)時(shí)數(shù)后,取消所有修改(ROLLBACK)。再次查詢所有課程的總學(xué)時(shí)數(shù)。注意比較分析兩次查詢的結(jié)果。updateCoursesetCTIME=80whereCNAME='程序設(shè)計(jì)';updateCoursesetCTIME=70whereCNAME='微機(jī)原理';selectCNO,SUM(CTIME)fromCoursegroupbyCNO;rollback;selectCNO,SUM(CTIME)fromCoursegroupbyCNO;例6-2:(事務(wù)提交)將課程名稱表中的‘程序設(shè)計(jì)’課程學(xué)時(shí)數(shù)修改為80、‘微機(jī)原理’課程學(xué)時(shí)數(shù)修改為70學(xué)時(shí),查詢所有課程的總學(xué)時(shí)數(shù)后,確認(rèn)所有修改(COMMIT)。再次查詢所有課程的總學(xué)時(shí)數(shù)。注意比較分析兩次查詢的結(jié)果。updat(yī)eCoursesetCTIME=80whereCNAME='程序設(shè)計(jì)';updateCoursesetCTIME=70whereCNAME='微機(jī)原理';selectCNO,SUM(CTIME)fromCoursegroup

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論