數(shù)據(jù)庫系統(tǒng)概論第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL(._第1頁
數(shù)據(jù)庫系統(tǒng)概論第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL(._第2頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、An Intrcxiuction to Database System數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL(續(xù)1): 3.4.1單表査詢 3.4.2連接?xùn)嗽儯?.4.3嵌套査詢: 3.4.4集合査詢. v 表名1 . BETWEEN .v列名2 AND .v列名3:連接字段:連接謂詞中的列名稱連接條件中的各連接字段類型必須是可比的.但名字不必是相同的:嵌套循環(huán)(NESTED-LOOP)肯先住農(nóng) 1 中找到第個(gè)元組,然后從頭開始扌 I 描衣 2,逐代找 滿足連接件的元紐,找到后就將中的第 個(gè)元細(xì) 9 該元組拼 接起來,

2、形成結(jié)果表中一個(gè)元組。農(nóng) 2 全部査找完后,再找表 1 中第:個(gè)元組,然后再從頭開始打描 農(nóng) 2,逐査找滿足連接條件的元組.找到后就將農(nóng) 1 中的第:個(gè) 元組與該元組拼接起來形成結(jié)果農(nóng)中一個(gè)尤組。連接操作的執(zhí)行過程:連接森詢:同時(shí)涉及多個(gè)衣的査詢An Intrcxiuction to Database System車箜上述操作,血到衣 1 中的全部元組都處理完畢An Intrcxiuction to Database System排序合并法(SORT-MERGE)常用于=連接前先按連接屬性對(duì)表1和表2排序?qū)Ρ?的第一個(gè)元組,從頭開始打描表2順序査找滿足連接條件的元組,找到后就將中的第個(gè)元組與該

3、 元組拼接起來,形成結(jié)果表中一個(gè)元組。出遇到麥2中 第-條大于表1連接字段值的元組時(shí),對(duì)農(nóng)2的查詢不再繼續(xù)An Introduction to Database System排序合并法-找到農(nóng)1的第二條尤組, 然后從剛才的中斷點(diǎn)處繼續(xù)順 序打描衣2,査找滿足連接條件的尤紐,找到后就將農(nóng)1中的第一個(gè)尤組與該元組拼接起來,形成結(jié)果農(nóng)中一個(gè) 元組。直接遇到表2中大于表1連接字段值的元組時(shí).對(duì) 衣2的含詢不再繼續(xù)重復(fù)上述操作,直到 Q 或農(nóng)2中的全部元組都處理完畢An Intrcxiuction to Database System為止An Intrcxiuction to Database Syst

4、em索引連接(INDEX-JOIN)對(duì)表中的每個(gè)元組,依次根據(jù)其連接字段值査詢農(nóng)2的索引.從小找到滿足條件的尤組,找到后就將表1中的第一個(gè)元組與該元組拼接起來,形成結(jié)果表中一個(gè)元組一、 等值與非等值連接查詢二、 自身連接三、外連接四、 復(fù)合條件連接對(duì)表2按連接字段建V索引An Introduction to Database SystemAn Intrcxiuction to Database SystemAn Intrcxiuction to Database System一.等值與非等值連接:等值連接:連接運(yùn)算符為二例33杳詢侮個(gè)學(xué)牛及其選修課程的怙:況SELECT Student.*,

5、SC.*FROM Student, SCWHERE Student.Sno =SC.Sno:An Introduction to Database System等值與非等值連接?xùn)嗽儯ɡm(xù))査詢結(jié)果:Student.SnoSnameSsexSageSdeptSC.SnoCnoGrade2(X)215121乍勇男20cs200215121192200215121李勇男20cs200215121285An Intrcxiuction to Database System200215121男20cs200215121388200215122劉晨女19cs2002151220J902DO2I5122劉晨女

6、19cs2(X)215122380等值與非等值連接查詢(!自然連接:例34対例33用D然連接完成。SELECT Student.Sno, Sname. Ssex. Sage. Sdept Cno. GradeFROM Student, SCWHERE Student.Sno = SC.Sno:An Intrcxiuction to Database System一、 等值與非等值連接查詢二、 自身連接三、外連接四、 復(fù)合條件連接二、自身連接:自身連接:一個(gè)表與其自C進(jìn)行連接:需要給表起別名以示區(qū)別:由于所有屬性名都是同名屬性,I対此必須使用別名前綴例35杳詢每一門課的間接先修課(即先修課的先修

7、課)SELECT FIRST.Cno, SECOND.CpnoFROM Course FIRST, Course SECONDWHERE FIRST.Cpno = SECOND.Cno;An Introduction to Database SystemKI匸自身連接(續(xù))An Intrcxiuction to Database SystemFIRSTS (Course農(nóng))CnoCnameCpnoCcrcdit1數(shù)據(jù)庫542數(shù)學(xué)23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理27PASCAL 語言64An Introduction to Database System自身連接(續(xù))SEC

8、OND衣(Course衣)An Introduction to Database System自身連接(續(xù))查詢結(jié)果:CnoPcnoI735An Intrcxiuction to Database System連接?xùn)嗽儯ɡm(xù))一. 等值與非等值連接查詢二、 自身連接三. 外連接四、 復(fù)合條件連接An Introduction to Database System三、外連接J外連接9普通連接的區(qū)別評(píng)通連接操作只輸出滿足連接條件的尤組An Intrcxiuction to Database System-外連接操作以指定農(nóng)為連接主體.將匸體衣屮不滿足連接條件的元組-并輸出例 36改寫例 33SELE

9、CT Student.Sno. Sname 90:r其他限定條件7復(fù)合條件連接(續(xù))An Introduction to Database System例38査詢每個(gè)學(xué)牛的學(xué)號(hào).姓名、選修的課程名及成績SELECT Student.Sno, Sname, Cname, GradeFROM Student, SC. Course廣多表連接*/WHERE Student.Sno = SC.Snoand SC.Cno = Course.Cno;An Introduction to Database System3.4數(shù)據(jù)査詢3.4.1單表査詢3.4.2連接?xùn)嗽?.4.3嵌套査詢3.4.4集合査詢3.

10、4.5 Select語句的一般形式An Intrcxiuction to Database System嵌套査詢(續(xù)):嵌套查詢概述 一個(gè)SELECT-FROM-WHEREtft句稱為一個(gè)査詢塊將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或H AVING短語的條件屮的金詢稱為嵌套査詢SELECT SnameFROM StudentWHERE Sno IN(SELECT SnoFROM SC嵌套査詢(續(xù))廣外層?xùn)嗽?父査詢*/廣內(nèi)層查詢/子?xùn)嗽?/An Intrcxiuction to Database SystemWHERECno=,2,):An Intrcxiuction to Datab

11、ase System嵌套査詢(續(xù)) F査詢的限制不能便用ORDER BY/J層層嵌套方式反映了SQL語言的結(jié)構(gòu)化有些嵌倉代詢可以丿IJ連接運(yùn)算替代An Introduction to Database System嵌套査詢求解方法:不相關(guān)子查詢:$杳詢的倉詢條件不依賴于父含詢由里向外逐層處理。 即每個(gè) (杳詢?cè)谏霞?jí)杳詢處理Z前求解,子杳詢的結(jié)果用J:建工其父杳詢的杳找條 件。嵌套查詢求解方法GAn Introduction to Database System:相關(guān)査詢:獷查詢的杳詢條件依賴于父杳詢首先取外層查詢屮衣的第一個(gè)元組,根據(jù)它9內(nèi)層查詢相關(guān)的屬性值處理內(nèi)屋杳詢,若WHERET句返冋值

12、為貞,則取此元組放入結(jié)果表-然后再取外層表的下一個(gè)元組-朿復(fù)這一過程,亞至外層表全部檢貪完為止An Introduction to Database System3.4.3嵌套査詢、帶有IN謂詞的子?xùn)嗽兌?帶有比較運(yùn)算符的子查詢?nèi)?帶有ANY (SOME)或ALL謂詞的子查詢四、 帶令EXISTS謂詞的子杳詢An Intrcxiuction to Database System一、帶有IN謂詞的子?xùn)嗽兝?9査詢9“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)憶此査詢要求可以分步來完成確定“劉晨”所在系名SELECT SdeptFROM StudentWHERE Sname= * 劉從I結(jié)果為:cs査找所有在I

13、S系學(xué)習(xí)的學(xué)生。SELECT Sno, Sname. SdeptFROM StudentWHERE Sdept=1CS *:結(jié)果為:SnoSnameSdept200215121李勇csAn Intrcxiuction to Database System2(X)215122劉斥csAn Intrcxiuction to Database System川fl少連接完成例39化詢要求SELECT Sl.Sno, Sl.Sname, Si.SdeptFROM Student S1, Student S2WHERE S1 .Sdept = S2.Sdept ANDS2.Sname =劉晨帶有IN謂詞的

14、子?xùn)诉B(續(xù))SELECT Sno, Sname, SdeptFROM StudentWHERE Sdept IN(SELECT SdeptFROM StudentWHERE Sname二劉晨);此査詢?yōu)椴幌嚓P(guān)子查詢。將第一步代詢嵌入到第.步査詢的條件中An Intrcxiuction to Database System帶有IN謂詞的子?xùn)嗽?:例 40任詢選修了課程名為 SELECT Sno. SnameFROM Student WHERE SnoIN (SELECT Sno FROM SCWHERE CnolN (SELECTCno FROM Course3)WG/i Student 關(guān)系中

15、取 HlSno 和 Sname然 flifl.SC 關(guān)系中找出選修了 3 號(hào)課程的學(xué)生學(xué)號(hào)當(dāng)先在 Course 關(guān)系中找出“信息系統(tǒng)”的課 FD; 為3用連接查詢實(shí)現(xiàn)例40SELECT Sno. SnameFROM Student. SC. CourseWHERE Student.Sno = SC.Sno ANDSC.Cno = Course.Cno ANDCourse.Cname=l(S息系統(tǒng):WHERE Cname=布息系統(tǒng).“伯息系統(tǒng)”的學(xué)生學(xué)號(hào)和姓名An Intrcxiuction to Database System3.4.3嵌套査詢、帶冇IN謂詞的子查詢二、 帶冇比較運(yùn)算符的子查詢

16、三、 帶有ANY (SOME)或ALL謂詞的子查詢四、 帶令EXISTS謂詞的子杳詢當(dāng)能確切知道內(nèi)層?xùn)嗽兎祷貑沃禃r(shí),可用比較運(yùn)算符(,= !=或)o:與AN丫或ALL謂詞配合使用An Intrcxiuction to Database System帶有比較運(yùn)算符的子?xùn)嗽儯ɡm(xù))例:假設(shè)一個(gè)學(xué)牛只可能在一個(gè)系學(xué)習(xí),并H.必須屬于一個(gè) 系,則在例39可以用=代替IN:SELECT Sno. Snama. SdeptFROM StudentWHERE Sdept =(SELECT SdeptFROM StudentWHERE Sname劉晨):An Introduction to Database S

17、ystem帶有比較運(yùn)算符的子?xùn)嗽儯ɡm(xù))了查詢一定耍跟在比較符之后錯(cuò)誤的例子:SELECT Sno, Sname. SdeptFROM StudentWHERE ( SELECT SdeptFROM StudentWHERE Sname= *劉泉)=Sdept;An Intrcxiuction to Database SystemSELECT Snot CnoFROM SC xWHERE Grade =(SELECT AVG(Grade)FROM SCyWHERE y.Sno=x.Sno);:可能的執(zhí)行過程:1從外層?xùn)嗽冎腥1SC的-個(gè)元組x,將元組x的Sno值(200215121)傳送給內(nèi)層

18、查詢。SELECT AVG(Grade)FROM SC yWHERE y.Sno= 20021512V;2執(zhí)行內(nèi)層查詢,得到值88(近似值),用該值代替內(nèi)層?xùn)?詢,得到外層?xùn)嗽儯篠ELECT Sno, CnoFROM SC xWHERE Grade =88;例41找出每個(gè)學(xué)牛超過他選修課程平均成績的課程號(hào)。An Introduction to Database SystemAn Intrcxiuction to Database System帶有比較運(yùn)算符的子?xùn)嗽?續(xù))3執(zhí)行這個(gè)査詢,得到(200215121, 1)(200215121, 3)4.外層金詢?nèi)〕鱿?個(gè)元組幣:父做上述1至3步驟,

19、血到外層 的SC尤組全部處理完畢。結(jié)果為:(200215121, 1)(200215121, 3)(200215122, 2)3.4.3嵌套査詢An Intrcxiuction to Database System、帶有IN謂詞的子?xùn)嗽兌в斜容^運(yùn)算符的子查詢二、帶有ANY (SOME)或ALL謂詞的子杳詢四、帶令EXISTS謂詞的子杳詢?nèi)в蠥NY (SOME)或ALL謂詞的子?xùn)嗽傾n Introduction to Database System謂詞語義 ANY:任意一個(gè)值 ALL:所何值需要配合使用比較運(yùn)算符大于了詵詢結(jié)果中的某個(gè)fit大f rify結(jié)果中的所仃值 小了詵詢結(jié)果中的某

20、個(gè)值 小于尹杳詢結(jié)果中的所有值 大于等r(件詢給果中的某個(gè)侑 大于等于子?xùn)嗽兘Y(jié)果中的所仔值 小于等于子伐詢結(jié)果屮的某個(gè)值 小于等于產(chǎn)任詢結(jié)來屮的所仃值 等于子直詢結(jié)果中的某個(gè)血 等于子任詢結(jié)果中的所右值(通常沒有實(shí)際怠義)ANY ALL ANYALL ANY =ANY=ALL=ANY)(或v)不等 子件詢結(jié)果中的菜個(gè)值 不等于心詢結(jié)果中的任何-個(gè)值帶有ANY (SOME)或ALL謂詞的子?xùn)嗽儯ɡm(xù))An Intrcxiuction to Database System帶有ANY (SOME)或ALL謂詞的子?xùn)嗽?續(xù))例42査詢X他系中比計(jì)算機(jī)科學(xué)某 學(xué)牛年齡小的學(xué)牛姓 名和年齡SELECT Snamo. SageFRO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論