資源描述:
《數(shù)據(jù)庫實(shí)驗(yàn)三-分組查詢.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實(shí)驗(yàn)三:分組查詢和嵌套查詢一、實(shí)驗(yàn)?zāi)康模菏炀氄莆沼肧QL語句實(shí)現(xiàn)多個(gè)數(shù)據(jù)表的分組查詢和嵌套查詢。二、實(shí)驗(yàn)內(nèi)容:(1)分組查詢:1.求各種顏色零件的平均重量。2.求北京供應(yīng)商和天津供應(yīng)商的總個(gè)數(shù)。3.求各供應(yīng)商供應(yīng)的零件總數(shù)。4.求各供應(yīng)商供應(yīng)給各工程的零件總數(shù)。5.求使用了100個(gè)以上P1零件的工程名稱。6.求各工程使用的各城市供應(yīng)的零件總數(shù)。(2)嵌套查詢:1.in連接謂詞查詢:①查詢沒有使用天津供應(yīng)商供應(yīng)的紅色零件的工程名稱。②查詢供應(yīng)了1000個(gè)以上零件的供應(yīng)商名稱。(having)2.比較運(yùn)算符:求重量大于所有零件平均重量的零件名稱。3.Exi
2、sts連接謂詞:①查詢供應(yīng)J1的所有的零件都是紅色的供應(yīng)商名稱。②至少用了供應(yīng)商S1所供應(yīng)的全部零件的工程號(hào)JNO。三、完成情況及實(shí)驗(yàn)結(jié)果(1)分組查詢:1、selectCOLOR,avg(WEIGHT)平均重量FROMPGROUPBYCOLOR;2、selectCITY,COUNT(CITY)個(gè)數(shù)FROMSWHERECITY='北京'orCITY='天津'GROUPBYCITY3、selectSPJ.SNO,SUM(QTY)零件總數(shù)FROMS,SPJWHERES.SNO=SPJ.SNO4GROUPBYSPJ.SNO4、selectSPJ.SNO,SP
3、J.JNO,COUNT(distinctQTY)零件總數(shù)FROMS,SPJGROUPBYSPJ.SNO,SPJ.JNO5、selectdistinctJNAMEFROMJ,SPJWHERESPJ.PNO='P1'ANDQTY>100ANDJ.JNO=SPJ.JNO;6、selectJNAME,S.CITY,SUM(QTY)零件總數(shù)FROMJ,S,SPJGROUPBYS.CITY,JNAME;4(2)嵌套查詢:1、selectJNAMEFROMJWHEREJNONOTIN(SELECTSPJ.JNOFROMS,P,SPJWHERES.SNO=SPJ.SN
4、OANDP.PNO=SPJ.PNOANDCITY='天津'andCOLOR='紅')2、selectSNAMEFROMSWHERESNOIN(SELECTSPJ.SNOFROMS,SPJWHERES.SNO=SPJ.SNOGROUPBYSPJ.SNOHAVINGSUM(QTY)>1000)3、SELECTPNAMEFROMP4WHEREWEIGHT>(SELECTAVG(WEIGHT)FROMP)4、selectsnamefromswherenotexists(select*fromspjwheresno=s.snoandjno='j1'andnote
5、xists(select*frompwherepno=spj.pnoandcolor='紅'));5、selectdistinctjnofromspjspjxwherenotexists(select*fromspjspjywheresno='s1'andnotexists(select*fromspjspjzwherespjz.jno=spjx.jnoandspjz.pno=spjy.pno))四、問題及解決辦法問題一:在第一個(gè)exists查詢中,直接用一層exists查詢得到的結(jié)果出錯(cuò)解決:通過分析知,只用一層exists查詢得到的是所有的供應(yīng)商,
6、應(yīng)該用兩層查詢,雙重否定。五、思考題:(一)嵌套查詢中的in連接謂詞查詢,關(guān)鍵字in可以直接用any代替么?什么情況下in和any可以互相代替?答:關(guān)鍵字in不可以直接用any代替,等于any時(shí)可以用in代替。(二)嵌套查詢中的內(nèi)查詢?yōu)橥獠樵兎祷氐膬?nèi)容是什么?是表達(dá)式?視圖?還是物理數(shù)據(jù)集合?答:在嵌套查詢的結(jié)果往往是一個(gè)集合但是帶有exists謂詞的子查詢不返回任何數(shù)據(jù),只返回true或者false。六、實(shí)驗(yàn)總結(jié)4通過本次實(shí)驗(yàn),熟悉了分組查詢,嵌套查詢,其中exists的用法掌握的不夠熟練,剛開始用的查詢語句得不到正確結(jié)果,通過仔細(xì)分析,找出了錯(cuò)誤,
7、也加深了對(duì)exists的理解也對(duì)數(shù)據(jù)庫的操作有了更多理解,后續(xù)要更加努力,把數(shù)據(jù)庫學(xué)的更好!4