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