【文章內(nèi)容簡(jiǎn)介】
例 325: (分組查詢(xún) )輸入以下查詢(xún)語(yǔ)句并執(zhí)行,觀察出現(xiàn)的其結(jié)果并分析其原因。 SELECT SNAME ,SDEPT ,COUNT(*)FROM STUDENT WHERE SDEPT=39。CS 39。 GROUP BY SDEPT。 如果在分組后的查詢(xún)結(jié)果中在選擇出一組符合條件的分組需用 HAVING字句,不能用 WHERE字句。否則會(huì)出錯(cuò)。 例 326: (分組查詢(xún) )分析以下語(yǔ)句為什么會(huì)出現(xiàn)錯(cuò)誤。并給出正確的查詢(xún)語(yǔ)句。 SELECT SAGE FROM STUDENT GROUP BY SNO。因?yàn)橛玫氖?GROUP BY語(yǔ)句所以查詢(xún)出來(lái)的是一組一組的數(shù)據(jù),而 Select后面的 Sage要與 GROUP BY后面的 保持一致。 27/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 SELECT Sage FROM STUDENT GROUP BY Sage。 例 327: (分組查詢(xún) )求學(xué)生人數(shù)不足 3人的系及其相應(yīng)的學(xué)生數(shù)。 Select Sdept,COUNT(DISTINCT Sno)from Student GROUP BY Sdept HAVING COUNT(DISTINCT Sno) 例 328: (分組查詢(xún) )求各系中除 01班之外的各班的學(xué)生人數(shù)。 Select Sclass,COUNT(Sno)from Student GROUP BY Sdept,Sclass HAVING Sclass 39。0139。 例 329: (涉及空值的查詢(xún) )分別觀察各組函數(shù)、行的顯示順序以及分組查詢(xún)與空值的關(guān)系。 SELECT COUNT(SCore)AS Count FROM Score。SELECT SUM(SCore)AS Sum FROM Score。 28/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 SELECT AVG(SCore)AS Avg FROM Score。SELECT MAX(SCore)AS Max FROM Score。SELECT MIN(SCore)AS Min FROM Score。 SELECT SCore FROM Score ORDER BY SCore DESC。 29/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 SELECT SCore FROM Score ORDER BY SCore ASC。 30/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 例 330: (連接查詢(xún) )求選修了課程 001且成績(jī)?cè)?70分以下或成績(jī)?cè)?90分以上的學(xué)生的姓名、課程名稱(chēng)和成績(jī)。 SELECT SNAME,CNAME,SCORE FROM STUDENT S,COURSE C,SCORE SC WHERE = AND = AND = 39。00139。 AND(SCORE NOT BETWEEN 70 AND 90)。 例 331: (連接查詢(xún)與表的別名 )求選修了課程的學(xué)生的學(xué)生姓名、課程號(hào)和成績(jī)。 Select Sname,Cno,SCore from Student S,Score SC WHERE =。 31/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 例 332: (自身連接查詢(xún) )求年齡大于 ’ 李麗 ’ 的所有學(xué)生的姓名 、系和年齡 .SELECT , FROM STUDENT S1 WHERE (SELECT FROM STUDENT S2 WHERE =39。李麗 39。)。 例 333: (外部連接查詢(xún) )求選修了課程 002或 003的學(xué)生的學(xué)號(hào)、課程號(hào)、課程名和成績(jī),要求必須將 002和 003課程的相關(guān)信息顯示出來(lái)。 Select Sno,Cname,SCore from Score RIGHT OUTER JOIN Course ON = WHERE IN(39。00239。,39。00339。)。 32/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 例 334: (子查詢(xún) )求與 ‘ 黎明 ’ 年齡相同的學(xué)生的姓名和系。 Select Sname,Sdept from Student WHERE Sage IN(Select Sage from Student WHERE Sname=39。黎明39。)。 例 335: (子查詢(xún) )求選修了課程名為 ’ 數(shù)據(jù)結(jié)構(gòu) ’ 的學(xué)生的學(xué)號(hào)和姓名。 Select Sno,Sname from Student WHERE Sno IN(Select Sno from Score WHERE Cno =(Select Cno from Course WHERE Cname=39。數(shù)據(jù)結(jié)構(gòu) 39。))。 例 336: (子查詢(xún) ANY)求比數(shù)學(xué)系中某一學(xué)生年齡大的學(xué)生的姓名和系。 Select Sname,Sdept from Student WHERE SageANY(Select Sage from Student WHERE Sdept=39。MA39。)。 33/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 例 337: (子查詢(xún) ALL)求比數(shù)學(xué)系中全體學(xué)生年齡大的學(xué)生的姓名和系。 Select Sname,Sdept from Student WHERE SageALL(Select Sage from Student WHERE Sdept=39。MA39。)。 例 338: (子查詢(xún) EXISTS)求選修了課程 004的學(xué)生的姓名和系。 SELECT SNO,Sname,Sdept from Student WHERE SNO IN(Select SNO from Score WHERE Cno=39。00439。)。 例 339: (返回多列的子查詢(xún) )求與 ‘ 李麗 ’ 同系且同齡的學(xué)生的姓名和系。 Select Sname,Sdept from Student WHERE(Sdept,Sage)IN(Select Sdept,Sage from Student WHERE Sname=39。李麗 39。)AND SNAME 39。李麗 39。 例 340: (多個(gè)子查詢(xún) )求與 ‘‘ 黎明 ’ 同系,且年齡大于 ‘ 李麗 ’ 的學(xué)生的信息。 Select * from Student WHERE Sdept IN(Select Sdept from student WHERE Sname=39。黎明 39。)AND 34/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 Sage(Select Sage from Student WHERE Sname=39。李麗 39。)。 例 341: (子查詢(xún)中使用表連接 )求數(shù)學(xué)系中年齡相同的學(xué)生的姓名和年齡。 Select Sname,Sage from student WHERE SNO IN(Select from Student S1,STUDENT S2 WHERE = AND != AND =39。MA39。 AND =39。MA39。)。 例 342: (連接或嵌套查詢(xún) )檢索至少選修王成剛老師所授課程中一門(mén)課程的女學(xué)生姓名。 Select Sname from Student WHERE SSex=39。女 39。 AND Sno IN(Select Sno from Score WHERE Cno IN(Select DISTINCT Cno from Teach WHERE Tname=39。王成剛 39。))。 例 343: (嵌套與分組查詢(xún) )檢索選修某課程的學(xué)生人數(shù)多于 3人的教師姓名。 Select DISTINCT Tname, Cno from Teach WHERE Cno IN(SELECT Cno FROM Score GROUP BY CNO HAVING COUNT(Cno)3)。 例 344: (集合查詢(xún) )列出所有教師和同學(xué)的姓名和性別。 35/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 Select Sname,SSEX from Student UNION Select Tname,TSEX from Teach。 例 345: (相關(guān)子查詢(xún) )求未選修課程 004的學(xué)生的姓名。 Select SNO,Sname from Student WHERE SNO NOT IN(Select SNO from Score WHERE Cno=39。00439。)。 例 346: (相關(guān)子查詢(xún) )求選修了全部課程的學(xué)生的姓名。 Select Sname from Student WHERE NOT EXISTS(Select * from Course WHERE NOT EXISTS(Select * from Score WHERE Sno= AND Cno=))。 36/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 例 347: (相關(guān)子查詢(xún) )求至少選修了學(xué)生 ‘96002’ 所選修的全部課程的學(xué)生的學(xué)號(hào)。 Select DISTINCT Sno from Score SC1 WHERE NOT EXISTS(Select * from Score SC2 WHERE =39。9600239。 AND NOT EXISTS(Select * from Score SC3 WHERE = AND =))AND 39。9600239。 例 348: (相關(guān)子查詢(xún) )求成績(jī)比所選修課程平均成績(jī)高的學(xué)生的學(xué)號(hào)、課程號(hào)、和成績(jī)。 Select Sno,Cno,SCore from Score SC WHERE SCore(Select AVG(SCore)from Score SC1 WHERE =)。 例 349: (相關(guān)子查詢(xún) )查詢(xún)被一個(gè)以上的學(xué)生選修的課程號(hào)。 Select DISTINCT Cno from Score SC WHERE EXISTS(Select * from Score GROUP BY CNO HAVING COUNT(Sno)1)ORDER BY CNO ASC。 37/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 例 350: (相關(guān)子查詢(xún) )查詢(xún)所有未選課程的學(xué)生姓名和所在系。 Select Sno,Sdept from Student S WHERE NOT EXISTS(Select * from Score SC WHERE =)。 [ 實(shí)驗(yàn)要求 ] 對(duì)數(shù)據(jù)庫(kù)表進(jìn)行各種查詢(xún)操作。 [ 實(shí)驗(yàn)方法 ] ① 將實(shí)驗(yàn)需求用 SQL語(yǔ)句表示; ② 執(zhí)行 SQL語(yǔ)句; ③ 查看執(zhí)行結(jié)果,如果結(jié)果不正確,進(jìn)行修改,直到正確為止。 [ 實(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)四:視圖、授權(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視圖的定義與操縱: 例 41: (建立視圖 )建立計(jì)算機(jī)系的學(xué)生的視圖 STUDENT_CS。 38/8 《數(shù)據(jù)庫(kù)系統(tǒng)概論》實(shí)驗(yàn)指導(dǎo)書(shū) 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 CREATE VIEW STUDENT_CS AS SELECT * FROM Student WHERE Sdept=39。CS39。 WITH CHECK OPTION。例 42:(建立視圖 )建立由學(xué)號(hào)和平均成績(jī)兩個(gè)字段的視圖 STUDENT_GR CREATE VIEW STUDENT_GR(Sno,GAVG)AS SELECT Sno,AVG(SCore)AS Avg FROM Score SC GROUP BY SNO。例 43: (視圖查詢(xún) )利用視圖 STUDENT_CS,求年齡大于 19歲的學(xué)生的全部信息。 SELECT * FROM STUDENT_CS WHERE Sage19。 例 44: (視圖查詢(xún) )利用視圖 STUDENT_GR,求平均成績(jī)?yōu)?88分以上的學(xué)生的學(xué)號(hào)和平均成績(jī)。 SELECT Sno,GAVG FROM STUDENT_GR WHERE GAvg88。例 45: (視圖更新 )利用視圖 STUDENT_CS,增加學(xué)生 (‘96006’ ,‘ 張然 ’ , ‘CS’ , ‘02’ , ‘ 男 ’ , 19)。 INSERT INTO STUDENT_CS VALUES(39。9600639。,39。張然 39。,39。CS39。,39。0239。,19,39。男 39。)。例 46: (視圖更新 )利用視圖 STUDENT_CS,將學(xué)生年齡增加 1歲。觀察其運(yùn)行結(jié)果并分析原因。 UPDATE STUDENT_CS SET Sage=Sage+1。 例 47: (視圖更新 )利用視圖 STUDENT_GR,將平均成績(jī)?cè)黾?2分。觀察其運(yùn)行結(jié)果并分析原因。 UPDATE STUDENT_GR SET GAvg=GAvg+2。例 48: (視圖更新 )刪除視圖 STUDENT_CS中學(xué)號(hào)為 ‘96006’ 的學(xué)生的全部數(shù)據(jù)。 DELETE FROM STUDENT_CS WHERE Sno=39