資源描述:
《實(shí)驗(yàn)六 嵌套查詢.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實(shí)驗(yàn)五一、實(shí)驗(yàn)名稱:數(shù)據(jù)庫嵌套查詢二、實(shí)驗(yàn)?zāi)康?.掌握嵌套查詢的表示及使用;2.掌握使用IN、比較符;3.掌握ANY或ALL;4.掌握EXISTS操作符進(jìn)行嵌套查詢操作。三、實(shí)驗(yàn)環(huán)境已安裝SQLServer2005企業(yè)版的計(jì)算機(jī);具有局域網(wǎng)環(huán)境,有固定IP;四、實(shí)驗(yàn)學(xué)時(shí)2學(xué)時(shí)五、實(shí)驗(yàn)要求1.了解連接查詢的表示及使用;2.完成實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)內(nèi)容及步驟:在WHERE子句中包含一個(gè)形如SELECT-FROM-WHERE的查詢塊,此查詢塊稱為子查詢或嵌套查詢,包含子查詢的語句稱為父查詢或外部查詢。一、返回一個(gè)值的子查詢當(dāng)子查詢的返回值只有一個(gè)時(shí),可以使用比較運(yùn)算符(=,>,<,>=,
2、<=,!=)將父查詢和子查詢連接起來?!纠?】查詢與李明教師職稱相同的教師號、姓名。SELECTTNO,TNFROMTWHEREPROF=(SELECTPROFFROMTWHERETN='李明')二、返回一組值的子查詢?nèi)绻硬樵兊姆祷刂挡恢挂粋€(gè),而是一個(gè)集合時(shí),則不能直接使用比較運(yùn)算符,可以在比較運(yùn)算符和子查詢之間插入ANY或ALL。1.使用ANY【例2】查詢講授課程號為C5的教師姓名。SELECTTNFROMT6WHERETNO=ANY(SELECTTNOFROMTCWHERECNO='C5')2.使用IN可以使用IN代替“=ANY”?!纠?】查詢講授課程號為C5的教師姓名
3、SELECTTNFROMTWHERETNOIN(SELECTTNOFROMTCWHERECNO='C5')3.使用ALLALL的含義為全部。【例4】查詢其他系中比電力系所有教師工資都高的教師的姓名和工資。SELECTTN,SALFROMTWHERESAL>ALL(SELECTSALFROMTWHEREDEPT='電力')ANDDEPT!=‘電力’4.使用EXISTSEXISTS表示存在量詞,帶有EXISTS的子查詢不返回任何實(shí)際數(shù)據(jù),它只得到邏輯值“真”或“假”。當(dāng)子查詢的的查詢結(jié)果集合為非空時(shí),外層的WHERE子句返回真值,否則返回假值?!纠?】查詢講授課程號為C5的教師姓
4、名SELECTTNFROMTWHEREEXISTS(SELECT*FROMTCWHERETNO=T.TNOANDCNO='C5')6綜合實(shí)例:【實(shí)例1】在數(shù)據(jù)庫Student_test中完成以下查詢:1.查詢與’劉晨’在同一個(gè)系學(xué)習(xí)的學(xué)生的信息select*fromstudentwheresdeptin(selectsdeptfromstudentwheresname='劉晨')2.查詢選修了課程名為’信息系統(tǒng)’的學(xué)生的學(xué)號和姓名selectno,snamefromstudentwheresnoin(selectsnofromscwherecnoin(selectcnofro
5、mcoursewherecname='信息系統(tǒng)'))3.查詢選修了課程’1’和課程’2’的學(xué)生的學(xué)號selectsnofromstudentwheresnoin(selectsnofromscwherecno='1')andsnoin(selectsnofromscwherecno='2')4.查詢比’劉晨’年齡小的所有學(xué)生的信息select*fromstudentwheresage<(selectsagefromstudentwheresname='劉晨')5.查詢其他系中比信息系(IS)某一學(xué)生年齡小的學(xué)生姓名和年齡selectsname,sagefromstudentw
6、heresage'IS'6.查詢其他系中比信息系(IS)學(xué)生年齡都小的學(xué)生姓名和年齡selectsname,sage6fromstudentwheresage'IS'7.查詢與計(jì)算機(jī)系(CS)系所有學(xué)生的年齡均不同的學(xué)生學(xué)號,姓名和年齡selectsno,sname,sagefromstudentwheresage<>all(selectsagefromstudentwh
7、eresdept='CS')8.查詢與其他所有學(xué)生年齡均不同的學(xué)生學(xué)號,姓名和年齡selectsno,sname,sagefromstudentAwherenotexists(select*fromstudentBwhereA.sage=B.sageandA.sno<>B.sno)9.查詢所有選修了1號課程的學(xué)生姓名selectsnamefromstudentwhereexists(select*fromscwheresno=student.snoandcno='1')10.查詢沒有選修了1號課程的學(xué)生