數(shù)據(jù)庫技術(shù)項目式教程(MySQL)課件 任務(wù)4.4子查詢_第1頁
數(shù)據(jù)庫技術(shù)項目式教程(MySQL)課件 任務(wù)4.4子查詢_第2頁
數(shù)據(jù)庫技術(shù)項目式教程(MySQL)課件 任務(wù)4.4子查詢_第3頁
數(shù)據(jù)庫技術(shù)項目式教程(MySQL)課件 任務(wù)4.4子查詢_第4頁
數(shù)據(jù)庫技術(shù)項目式教程(MySQL)課件 任務(wù)4.4子查詢_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

子查詢?nèi)蝿?wù)提出當(dāng)查詢涉及多張表時,習(xí)慣的做法是使用連接查詢,先將涉及的多張表連接起來。對于查詢結(jié)果只涉及一張表,而查詢條件涉及其他一張或多張表的查詢,除了使用多表連接查詢外,可以使用嵌套查詢。另外,部分查詢的條件復(fù)雜,如,查詢出選修“2003003”課程且平時成績低于本課程平時成績的平均分的學(xué)生學(xué)號,查詢選修了全部課程的學(xué)生姓名。這些查詢無法使用多表連接查詢實現(xiàn),需要使用嵌套查詢實現(xiàn)。任務(wù)分析在一個SELECT語句的WHERE子句中的行條件表達式或HAVING子句中的組篩選條件中,含有另一個SEELCT語句,這種查詢稱為嵌套查詢。根據(jù)內(nèi)部查詢的查詢條件是否依賴于外部查詢,可將嵌套查詢分為:不相關(guān)子查詢相關(guān)子查詢1.不相關(guān)子查詢根據(jù)外部查詢和內(nèi)部查詢連接的關(guān)鍵字,可將不相關(guān)子查詢分為:帶比較運算符的子查詢帶IN、NOTIN關(guān)鍵字的子查詢帶ANY、ALL關(guān)鍵字的子查詢相關(guān)知識與技能(1)帶比較運算符的子查詢外層查詢與內(nèi)層查詢之間可以用>、<、=、>=、<=、!=或<>等比較運算符進行連接。【例】查詢'數(shù)據(jù)庫技術(shù)與應(yīng)用1'課程學(xué)生的選課信息。SELECT*FROMScoreWHERECno=(SELECTCnoFROMCourseWHERECname='數(shù)據(jù)庫技術(shù)與應(yīng)用1');先求解出內(nèi)層查詢結(jié)果,內(nèi)層查詢只執(zhí)行一次,執(zhí)行完畢后將結(jié)果傳遞給外層查詢。相關(guān)知識與技能(2)帶IN、NOTIN關(guān)鍵字的子查詢子查詢的結(jié)果往往是一個集合?!纠坎樵兂鲞x修了課程編號為'0901169'課程的學(xué)生姓名和班級編號。SELECTSname,ClassNoFROMStudentWHERESnoIN(SELECTSnoFROMScoreWHERECno='0901169');【注意】IN前面必須有字段名,IN前面的字段名必須與子查詢中SELECT后的字段名對應(yīng)。相關(guān)知識與技能【例】查詢出選修了'數(shù)據(jù)庫技術(shù)與應(yīng)用1'課程的學(xué)生姓名和班級編號?!纠坎樵兂鲞x修'2003003'課程且平時成績低于本課程平時成績的平均值的學(xué)生學(xué)號?!纠坎樵儧]有選修課程編號為‘0901170’的學(xué)生學(xué)號和姓名。任務(wù)實施(3)帶ANY、ALL關(guān)鍵字的子查詢使用ANY或ALL關(guān)鍵字時必須同時使用比較運算符。>ANY

大于子查詢結(jié)果中的某個值>ALL

大于子查詢結(jié)果中的所有值【例】查詢男生中比任意一個女生年齡小的男生姓名和出生年月。SELECTSname,BirthFROMStudentWHERESex='男'ANDBirth>ANY(SELECTBirthFROMStudentWHERESex='女');相關(guān)知識與技能帶ANY、ALL關(guān)鍵字的子查詢【例】查詢男生中比所有女生年齡小的男生姓名和出生年月。SELECTSname,BirthFROMStudentWHERESex='男'ANDBirth>ALL(SELECTBirthFROMStudentWHERESex='女');相關(guān)知識與技能2.相關(guān)子查詢(1)帶EXISTS、NOTEXISTS關(guān)鍵字的子查詢【例】查詢出選修了課程編號為'0901169'課程的學(xué)生姓名和班級編號。SELECTSname,ClassNoFROMStudentWHEREEXISTS(SELECT*FROMScoreWHERESno=Student.SnoANDCno='0901169');【注意】EXISTS關(guān)鍵字前面沒有字段名,子查詢的SELECT后為*,子查詢中的WHERE條件中必須有連接條件關(guān)聯(lián)外部表。相關(guān)知識與技能【例】查詢沒有選修課程編號為'0901170'的學(xué)生學(xué)號和姓名。SELECTSno,SnameFROMStudentWHERENOTEXISTS (SELECT*

FROMScore WHERESno=student.SnoANDCno='0901170');任務(wù)實施【例】查詢選修了全部課程的學(xué)生姓名。SELECTSname FROMStudent WHERENOTEXISTS (SELECT* FROMCourse WHERENOTEXISTS (SELECT* FROMScore WHERESno=Student.SnoANDCno=Course.Cno) );任務(wù)實施(2)帶IN與EXISTS的子查詢的區(qū)別IN是子表為驅(qū)動表,父表為被驅(qū)動表,故適用于子表查詢結(jié)果集小而父表結(jié)果集大的情況。EXISTS是父表為驅(qū)動表,子表為被驅(qū)動表,故適用于父表結(jié)果集小而子表查詢結(jié)果集大的情況。NOTIN不對NULL進行處理,NOTEXISTS會

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論