數(shù)據(jù)庫原理概論課件_第1頁
數(shù)據(jù)庫原理概論課件_第2頁
數(shù)據(jù)庫原理概論課件_第3頁
數(shù)據(jù)庫原理概論課件_第4頁
數(shù)據(jù)庫原理概論課件_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、3.4 數(shù)據(jù)查詢數(shù)據(jù)查詢 v3.4.1 單表查詢單表查詢 v3.4.2 連接查詢連接查詢 v3.4.3 嵌套查詢嵌套查詢 v3.4.4 集合查詢集合查詢 v3.4.5 Select語句的一般形式語句的一般形式 3.4.2 連接查詢連接查詢 v 連接查詢:同時(shí)涉及多個(gè)表的查詢 v 連接條件或連接謂詞:用來連接兩個(gè)表的條件 一般格式: n . . n . BETWEEN . AND . v 連接字段:連接謂詞中的列名稱 n 連接條件中的各連接字段類型必須是可比的,但名字不必是相同的 連接操作的執(zhí)行過程連接操作的執(zhí)行過程 v 嵌套循環(huán)法(NESTED-LOOP) 首先在表1中找到第一個(gè)元組,然后從頭

2、開始掃描表2,逐一查找 滿足連接件的元組,找到后就將表1中的第一個(gè)元組與該元組拼 接起來,形成結(jié)果表中一個(gè)元組。 表2全部查找完后,再找表1中第二個(gè)元組,然后再從頭開始掃描 表2,逐一查找滿足連接條件的元組,找到后就將表1中的第二個(gè) 元組與該元組拼接起來,形成結(jié)果表中一個(gè)元組。 重復(fù)上述操作,直到表1中的全部元組都處理完畢 排序合并法排序合并法(SORT-MERGE) 常用于=連接 首先按連接屬性對表1和表2排序 對表1的第一個(gè)元組,從頭開始掃描表2,順序查找滿足 連接條件的元組,找到后就將表1中的第一個(gè)元組與該 元組拼接起來,形成結(jié)果表中一個(gè)元組。當(dāng)遇到表2中 第一條大于表1連接字段值的元組

3、時(shí),對表2的查詢不再 繼續(xù) 排序合并法排序合并法 找到表1的第二條元組,然后從剛才的中斷點(diǎn)處繼續(xù)順 序掃描表2,查找滿足連接條件的元組,找到后就將表1 中的第一個(gè)元組與該元組拼接起來,形成結(jié)果表中一個(gè) 元組。直接遇到表2中大于表1連接字段值的元組時(shí),對 表2的查詢不再繼續(xù) 重復(fù)上述操作,直到表1或表2中的全部元組都處理完畢 為止 索引連接索引連接(INDEX-JOIN) 對表2按連接字段建立索引 對表1中的每個(gè)元組,依次根據(jù)其連接字段值查詢 表2的索引,從中找到滿足條件的元組,找到后就 將表1中的第一個(gè)元組與該元組拼接起來,形成結(jié) 果表中一個(gè)元組 連接查詢(續(xù))連接查詢(續(xù)) 一、等值與非等值

4、連接查詢 二、自身連接 三、外連接 四、復(fù)合條件連接 一、等值與非等值連接查詢一、等值與非等值連接查詢 v等值連接:連接運(yùn)算符為= 例33 查詢每個(gè)學(xué)生及其選修課程的情況 SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno = SC.Sno; 等值與非等值連接查詢(續(xù))等值與非等值連接查詢(續(xù)) Student.SnoSnameSsexSageSdeptSC.SnoCnoGrade 200215121李勇男20CS200215121192 200215121李勇男20CS200215121285 200215121李勇男20CS200

5、215121388 200215122劉晨女19CS200215122290 200215122劉晨女19CS200215122380 查詢結(jié)果:查詢結(jié)果: 等值與非等值連接查詢(續(xù))等值與非等值連接查詢(續(xù)) v自然連接: 例34 對例33用自然連接完成。 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.Sno; 連接查詢(續(xù))連接查詢(續(xù)) 一、等值與非等值連接查詢 二、自身連接 三、外連接 四、復(fù)合條件連接 二、自身連接二、自身連接 v 自身連接:一個(gè)表與其

6、自己進(jìn)行連接 v 需要給表起別名以示區(qū)別 v 由于所有屬性名都是同名屬性,因此必須使用別名前綴 例35查詢每一門課的間接先修課(即先修課的先修課) SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno = SECOND.Cno; 自身連接(續(xù))自身連接(續(xù)) FIRST表(Course表) Cno CnameCpnoCcredit 1數(shù)據(jù)庫數(shù)據(jù)庫 5 4 2數(shù)學(xué)數(shù)學(xué) 2 3信息系統(tǒng)信息系統(tǒng) 1 4 4操作系統(tǒng)操作系統(tǒng) 6 3 5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 7 4 6數(shù)據(jù)處理數(shù)據(jù)處理 2 7PASCAL語

7、言語言 6 4 自身連接(續(xù))自身連接(續(xù)) Cno CnameCpnoCcredit 1數(shù)據(jù)庫數(shù)據(jù)庫 5 4 2數(shù)學(xué)數(shù)學(xué) 2 3信息系統(tǒng)信息系統(tǒng) 1 4 4操作系統(tǒng)操作系統(tǒng) 6 3 5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 7 4 6數(shù)據(jù)處理數(shù)據(jù)處理 2 7PASCAL語言語言 6 4 SECOND表(Course表) 自身連接(續(xù))自身連接(續(xù)) 查詢結(jié)果: CnoPcno 17 35 56 連接查詢(續(xù))連接查詢(續(xù)) 一、等值與非等值連接查詢 二、自身連接 三、外連接 四、復(fù)合條件連接 三、外連接三、外連接 v 外連接與普通連接的區(qū)別 普通連接操作只輸出滿足連接條件的元組 外連接操作以指定表為連接主體,將主

8、體表中不滿足連接條件的 元組一并輸出 例 36 改寫例33 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno); 外連接(續(xù))外連接(續(xù)) 執(zhí)行結(jié)果:執(zhí)行結(jié)果: Student.SnoSnameSsexSageSdeptCnoGrade 200215121李勇男20CS192 200215121李勇男20CS285 200215121李勇男20CS388 200215122劉晨女19CS290 200215122劉晨女19CS380 20

9、0215123王敏女18MANULLNULL 200215125張立男19ISNULLNULL 外連接(續(xù))外連接(續(xù)) v 左外連接 列出左邊關(guān)系(如本例Student)中所有的元組 v 右外連接 列出右邊關(guān)系中所有的元組 連接查詢(續(xù))連接查詢(續(xù)) 一、等值與非等值連接查詢 二、自身連接 三、外連接 四、復(fù)合條件連接 四、復(fù)合條件連接四、復(fù)合條件連接 v復(fù)合條件連接:WHERE子句中含多個(gè)連接條件 例37查詢選修2號課程且成績在90分以上的所有學(xué)生 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno = SC.Sno

10、AND /* 連接謂詞*/ SC.Cno= 2 AND SC.Grade 90; /* 其他限定條件 */ 復(fù)合條件連接(續(xù))復(fù)合條件連接(續(xù)) 例38查詢每個(gè)學(xué)生的學(xué)號、姓名、選修的課程名及成績 SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course /*多表連接多表連接*/ WHERE Student.Sno = SC.Sno and SC.Cno = Course.Cno; 3.4 數(shù)據(jù)查詢數(shù)據(jù)查詢 v3.4.1 單表查詢單表查詢 v3.4.2 連接查詢連接查詢 v3.4.3 嵌套查詢嵌套查詢 v3.4.4 集合查詢集合查詢

11、 v3.4.5 Select語句的一般形式語句的一般形式 嵌套查詢嵌套查詢(續(xù)續(xù)) v嵌套查詢概述 一個(gè)SELECT-FROM-WHERE語句稱為一個(gè)查詢塊查詢塊 將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句 或HAVING短語的條件中的查詢稱為嵌套查詢嵌套查詢 嵌套查詢嵌套查詢(續(xù)續(xù)) SELECT Sname /*外層查詢/父查詢*/ FROM Student WHERE Sno IN (SELECT Sno /*內(nèi)層查詢/子查詢*/ FROM SC WHERE Cno= 2 ); 嵌套查詢嵌套查詢(續(xù)續(xù)) 子查詢的限制 不能使用ORDER BY子句 層層嵌套方式反映了 SQL語言的結(jié)構(gòu)

12、化 有些嵌套查詢可以用連接運(yùn)算替代 嵌套查詢求解方法嵌套查詢求解方法 v不相關(guān)子查詢: 子查詢的查詢條件不依賴于父查詢 n由里向外 逐層處理。即每個(gè)子查詢在上一級查詢處理 之前求解,子查詢的結(jié)果用于建立其父查詢的查找條 件。 嵌套查詢求解方法(續(xù))嵌套查詢求解方法(續(xù)) v相關(guān)子查詢:子查詢的查詢條件依賴于父查詢 首先取外層查詢中表的第一個(gè)元組,根據(jù)它與內(nèi)層查 詢相關(guān)的屬性值處理內(nèi)層查詢,若WHERE子句返回值 為真,則取此元組放入結(jié)果表 然后再取外層表的下一個(gè)元組 重復(fù)這一過程,直至外層表全部檢查完為止 3.4.3 嵌套查詢嵌套查詢 一、帶有IN謂詞的子查詢 二、 帶有比較運(yùn)算符的子查詢 三

13、、 帶有ANY(SOME)或ALL謂詞的子查詢 四、 帶有EXISTS謂詞的子查詢 一、帶有一、帶有IN謂詞的子查詢謂詞的子查詢 例39 查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生。 此查詢要求可以分步來完成 確定“劉晨”所在系名 SELECT Sdept FROM Student WHERE Sname= 劉晨 ; 結(jié)果為: CS 帶有帶有IN謂詞的子查詢(續(xù))謂詞的子查詢(續(xù)) 查找所有在IS系學(xué)習(xí)的學(xué)生。 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept= CS ; 結(jié)果為: SnoSnameSdept 200215121李勇CS 200215122

14、劉晨CS 帶有帶有IN謂詞的子查詢(續(xù))謂詞的子查詢(續(xù)) 將第一步查詢嵌入到第二步查詢的條件中 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname= 劉晨 ); 此查詢?yōu)椴幌嚓P(guān)子查詢。 帶有帶有IN謂詞的子查詢(續(xù))謂詞的子查詢(續(xù)) 用自身連接完成例39查詢要求 SELECT S1.Sno,S1.Sname,S1.Sdept FROM Student S1,Student S2 WHERE S1.Sdept = S2.Sdept AND S2.Sname = 劉晨

15、; 帶有帶有IN謂詞的子查詢(續(xù))謂詞的子查詢(續(xù)) 例40查詢選修了課程名為“信息系統(tǒng)”的學(xué)生學(xué)號和姓名 SELECT Sno,Sname 最后在Student關(guān)系中 FROM Student 取出Sno和Sname WHERE Sno IN (SELECT Sno 然后在SC關(guān)系中找出選 FROM SC 修了3號課程的學(xué)生學(xué)號 WHERE Cno IN (SELECT Cno 首先在Course關(guān)系中找出 FROM Course “信息系統(tǒng)”的課程號,為3 號 WHERE Cname= 信息系統(tǒng) ) ); 帶有帶有IN謂詞的子查詢(續(xù))謂詞的子查詢(續(xù)) 用連接查詢實(shí)現(xiàn)例40 SELECT

16、 Sno,Sname FROM Student,SC,Course WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno AND Course.Cname=信息系統(tǒng); 3.4.3 嵌套查詢嵌套查詢 一、帶有IN謂詞的子查詢 二、 帶有比較運(yùn)算符的子查詢 三、 帶有ANY(SOME)或ALL謂詞的子查詢 四、 帶有EXISTS謂詞的子查詢 二、帶有比較運(yùn)算符的子查詢二、帶有比較運(yùn)算符的子查詢 v 當(dāng)能確切知道內(nèi)層查詢返回單值時(shí),可用比較運(yùn) 算符(,=,=,!=或)。 v與ANY或ALL謂詞配合使用 帶有比較運(yùn)算符的子查詢(續(xù))帶有比較運(yùn)算符的子查詢

17、(續(xù)) 例:假設(shè)一個(gè)學(xué)生只可能在一個(gè)系學(xué)習(xí),并且必須屬于一個(gè) 系,則在例39可以用 = 代替IN : SELECT Sno,Sname,Sdept FROM Student WHERE Sdept = (SELECT Sdept FROM Student WHERE Sname= 劉晨); 帶有比較運(yùn)算符的子查詢(續(xù))帶有比較運(yùn)算符的子查詢(續(xù)) 子查詢一定要跟在比較符之后 錯(cuò)誤錯(cuò)誤的例子: SELECT Sno,Sname,Sdept FROM Student WHERE ( SELECT Sdept FROM Student WHERE Sname= 劉晨 ) = Sdept; 帶有比較運(yùn)

18、算符的子查詢(續(xù))帶有比較運(yùn)算符的子查詢(續(xù)) 例41找出每個(gè)學(xué)生超過他選修課程平均成績的課程號。 SELECT Sno, Cno FROM SC x WHERE Grade =(SELECT AVG(Grade) FROM SC y WHERE y.Sno=x.Sno); 相關(guān)子查詢相關(guān)子查詢 帶有比較運(yùn)算符的子查詢(續(xù))帶有比較運(yùn)算符的子查詢(續(xù)) v 可能的執(zhí)行過程:可能的執(zhí)行過程: 1. 從外層查詢中取出SC的一個(gè)元組x,將元組x的Sno值 (200215121)傳送給內(nèi)層查詢。 SELECT AVG(Grade) FROM SC y WHERE y.Sno=200215121; 2.

19、 執(zhí)行內(nèi)層查詢,得到值88(近似值),用該值代替內(nèi)層查 詢,得到外層查詢: SELECT Sno, Cno FROM SC x WHERE Grade =88; 帶有比較運(yùn)算符的子查詢(續(xù))帶有比較運(yùn)算符的子查詢(續(xù)) 3. 執(zhí)行這個(gè)查詢,得到 (200215121,1) (200215121,3) 4.外層查詢?nèi)〕鱿乱粋€(gè)元組重復(fù)做上述1至3步驟,直到外層 的SC元組全部處理完畢。結(jié)果為: (200215121,1) (200215121,3) (200215122,2) 3.4.3 嵌套查詢嵌套查詢 一、帶有IN謂詞的子查詢 二、 帶有比較運(yùn)算符的子查詢 三、 帶有ANY(SOME)或ALL

20、謂詞的子查詢 四、 帶有EXISTS謂詞的子查詢 三、帶有三、帶有ANY(SOME)或)或ALL謂詞的子查詢謂詞的子查詢 謂詞語義 ANY:任意一個(gè)值 ALL:所有值 帶有帶有ANY(SOME)或)或ALL謂詞的子查詢謂詞的子查詢 (續(xù))(續(xù)) 需要配合使用比較運(yùn)算符 ANY大于子查詢結(jié)果中的某個(gè)值 ALL大于子查詢結(jié)果中的所有值 ANY小于子查詢結(jié)果中的某個(gè)值 = ANY大于等于子查詢結(jié)果中的某個(gè)值 = ALL大于等于子查詢結(jié)果中的所有值 = ANY小于等于子查詢結(jié)果中的某個(gè)值 = ALL小于等于子查詢結(jié)果中的所有值 = ANY等于子查詢結(jié)果中的某個(gè)值 =ALL等于子查詢結(jié)果中的所有值(通常

21、沒有實(shí)際意義) !=(或)ANY不等于子查詢結(jié)果中的某個(gè)值 !=(或)ALL不等于子查詢結(jié)果中的任何一個(gè)值 帶有帶有ANY(SOME)或)或ALL謂詞的子查詢謂詞的子查詢 (續(xù))(續(xù)) 例42 查詢其他系中比計(jì)算機(jī)科學(xué)某一學(xué)生年齡小的學(xué)生姓 名和年齡 SELECT Sname,Sage FROM Student WHERE Sage ANY (SELECT Sage FROM Student WHERE Sdept= CS ) AND Sdept CS ; /*父查詢塊中的條件 */ 帶有帶有ANY(SOME)或)或ALL謂詞的子查詢謂詞的子查詢 (續(xù))(續(xù)) 結(jié)果: 執(zhí)行過程: 1.RDBM

22、S執(zhí)行此查詢時(shí),首先處理子查詢,找出 CS系中所有學(xué)生的年齡,構(gòu)成一個(gè)集合(20,19) 2. 處理父查詢,找所有不是CS系且年齡小于 20 或 19的學(xué)生 SnameSage 王敏18 張立19 帶有帶有ANY(SOME)或)或ALL謂詞的子查詢謂詞的子查詢 (續(xù))(續(xù)) 用聚集函數(shù)實(shí)現(xiàn)例42 SELECT Sname,Sage FROM Student WHERE Sage (SELECT MAX(Sage) FROM Student WHERE Sdept= CS ) AND Sdept CS ; 帶有帶有ANY(SOME)或)或ALL謂詞的子查詢謂詞的子查詢 (續(xù))(續(xù)) 例43 查詢

23、其他系中比計(jì)算機(jī)科學(xué)系所有學(xué)生年齡都小 的學(xué)生姓名及年齡。 方法一:用ALL謂詞 SELECT Sname,Sage FROM Student WHERE Sage ALL (SELECT Sage FROM Student WHERE Sdept= CS ) AND Sdept CS ; 帶有帶有ANY(SOME)或)或ALL謂詞的子查詢謂詞的子查詢 (續(xù))(續(xù)) 方法二:用聚集函數(shù) SELECT Sname,Sage FROM Student WHERE Sage (SELECT MIN(Sage) FROM Student WHERE Sdept= CS ) AND Sdept CS ;

24、 帶有帶有ANY(SOME)或)或ALL謂詞的子查詢謂詞的子查詢 (續(xù))(續(xù)) 表3.5 ANY(或SOME),ALL謂詞與聚集函數(shù)、IN謂詞的等價(jià)轉(zhuǎn)換關(guān)系 = 或或!= = ANY IN - MAXMIN= MIN ALL - NOT IN MIN MAX = MAX 3.4.3 嵌套查詢嵌套查詢 一、帶有IN謂詞的子查詢 二、 帶有比較運(yùn)算符的子查詢 三、 帶有ANY(SOME)或ALL謂詞的子查詢 四、 帶有EXISTS謂詞的子查詢 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) v 1. EXISTS謂詞 n存在量詞 n帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值

25、 “true”或邏輯假值“false”。 若內(nèi)層查詢結(jié)果非空,則外層的WHERE子句返回真值 若內(nèi)層查詢結(jié)果為空,則外層的WHERE子句返回假值 n由EXISTS引出的子查詢,其目標(biāo)列表達(dá)式通常都用* ,因?yàn)?帶EXISTS的子查詢只返回真值或假值,給出列名無實(shí)際意義 v 2. NOT EXISTS謂詞 若內(nèi)層查詢結(jié)果非空,則外層的WHERE子句返回假值 若內(nèi)層查詢結(jié)果為空,則外層的WHERE子句返回真值 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) 例44查詢所有選修了1號課程的學(xué)生姓名。 思路分析: n本查詢涉及Student和SC關(guān)系 n在Student中依次取每個(gè)元組的Sno

26、值,用此值去檢查SC關(guān)系 n若SC中存在這樣的元組,其Sno值等于此Student.Sno值,并 且其Cno= 1,則取此Student.Sname送入結(jié)果關(guān)系 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) n用嵌套查詢 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno= 1 ); 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) n用連接運(yùn)算 SELECT Sname FROM Student, SC WHERE Student.Sno=SC.Sno A

27、ND SC.Cno= 1; 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) 例45 查詢沒有選修1號課程的學(xué)生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno=1); 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) v 不同形式的查詢間的替換 n一些帶EXISTS或NOT EXISTS謂詞的子查詢不能被其他形式的子 查詢等價(jià)替換 n所有帶IN謂詞、比較運(yùn)算符、ANY和ALL謂詞的子查詢都能用帶 EXISTS謂詞的子查詢等價(jià)替換 v 用E

28、XISTS/NOT EXISTS實(shí)現(xiàn)全稱量詞(難點(diǎn)) SQL語言中沒有全稱量詞 (For all) 可以把帶有全稱量詞的謂詞轉(zhuǎn)換為等價(jià)的帶有存在量詞的謂詞: (x)P ( x( P) 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) 例:例39查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生。 可以用帶EXISTS謂詞的子查詢替換: SELECT Sno,Sname,Sdept FROM Student S1 WHERE EXISTS (SELECT * FROM Student S2 WHERE S2.Sdept = S1.Sdept AND S2.Sname = 劉晨); 帶有帶有EXISTS謂詞

29、的子查詢謂詞的子查詢(續(xù))續(xù)) 例46 查詢選修了全部課程的學(xué)生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM Course WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno= Student.Sno AND Cno= Course.Cno ) ); 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) 用EXISTS/NOT EXISTS實(shí)現(xiàn)邏輯蘊(yùn)函(難點(diǎn)) SQL語言中沒有蘊(yùn)函(Implication)邏輯運(yùn)算 可以利用謂詞演算將邏輯蘊(yùn)函謂詞等價(jià)轉(zhuǎn)換為: p q pq 帶有

30、帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) 例47查詢至少選修了學(xué)生200215122選修的全部課程的學(xué) 生號碼。 解題思路: n用邏輯蘊(yùn)函表達(dá):查詢學(xué)號為x的學(xué)生,對所有的課程y,只要 200215122學(xué)生選修了課程y,則x也選修了y。 n形式化表示: 用P表示謂詞 “學(xué)生200215122選修了課程y” 用q表示謂詞 “學(xué)生x選修了課程y” 則上述查詢?yōu)? (y) p q 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) n等價(jià)變換: (y)p q (y (p q ) (y ( p q) ) y(pq) n變換后語義:不存在這樣的課程y,學(xué)生200215122選修了 y,而

31、學(xué)生x沒有選。 帶有帶有EXISTS謂詞的子查詢謂詞的子查詢(續(xù))續(xù)) n用NOT EXISTS謂詞表示: SELECT DISTINCT Sno FROM SC SCX WHERE NOT EXISTS (SELECT * FROM SC SCY WHERE SCY.Sno = 200215122 AND NOT EXISTS (SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno); 3.4 數(shù)據(jù)查詢數(shù)據(jù)查詢 v3.4.1 單表查詢單表查詢 v3.4.2 連接查詢連接查詢 v3.4.3 嵌套查詢嵌套查詢 v3.4.4 集合查詢集合查詢 v3.4.5 Select語句的一般形式語句的一般形式 3.4.4 集合查詢集合查詢 v集合操作的種類 并操作UNION 交操作INTERSECT 差操作EXCEPT v參加集合操作的各查詢結(jié)果的列數(shù)必須相同;對 應(yīng)項(xiàng)的數(shù)據(jù)類型也必須相同 集合查詢(續(xù))集合查詢(續(xù)) 例48 查詢計(jì)算機(jī)科學(xué)系的學(xué)生及年齡不大于19歲的學(xué)生。 方法一: SELECT * FROM Student WHERE Sdept= CS UNION SELECT * FROM Student WHERE Sage=19; nUNIO

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論