版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
(優(yōu)選)數(shù)據(jù)庫系統(tǒng)概論第五版ppt講解目前一頁\總數(shù)八十一頁\編于十六點第三章
關(guān)系數(shù)據(jù)庫標準語言SQL3.1SQL概述3.2學生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6空值的處理3.7視圖3.8小結(jié)目前二頁\總數(shù)八十一頁\編于十六點3.4數(shù)據(jù)查詢3.4.1單表查詢3.4.2連接查詢3.4.3嵌套查詢3.4.4集合查詢基于派生表的查詢3.4.5Select語句的一般形式
目前三頁\總數(shù)八十一頁\編于十六點3.4.2連接查詢連接查詢:同時涉及兩個以上的表的查詢連接條件或連接謂詞:用來連接兩個表的條件 一般格式:[<表名1>.]<列名1><比較運算符>[<表名2>.]<列名2>[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名2>.]<列名3>連接字段:連接謂詞中的列名稱連接條件中的各連接字段類型必須是可比的,但名字不必相同目前四頁\總數(shù)八十一頁\編于十六點連接查詢(續(xù))1.等值與非等值連接查詢2.自身連接3.外連接4.多表連接目前五頁\總數(shù)八十一頁\編于十六點1.等值與非等值連接查詢等值連接:連接運算符為=[例3.49]查詢每個學生及其選修課程的情況
SELECTStudent.*,SC.*
FROMStudent,SC
WHEREStudent.Sno=SC.Sno;目前六頁\總數(shù)八十一頁\編于十六點等值與非等值連接查詢(續(xù))Student.SnoSnameSsexSageSdeptSC.SnoCnoGrade201215121李勇男20CS201215121192201215121李勇男20CS201215121285201215121李勇男20CS201215121388201215122劉晨女19CS201215122290201215122劉晨女19CS201215122380查詢結(jié)果:目前七頁\總數(shù)八十一頁\編于十六點連接操作的執(zhí)行過程(1)嵌套循環(huán)法(NESTED-LOOP)首先在表1中找到第一個元組,然后從頭開始掃描表2,逐一查找滿足連接件的元組,找到后就將表1中的第一個元組與該元組拼接起來,形成結(jié)果表中一個元組。表2全部查找完后,再找表1中第二個元組,然后再從頭開始掃描表2,逐一查找滿足連接條件的元組,找到后就將表1中的第二個元組與該元組拼接起來,形成結(jié)果表中一個元組。重復上述操作,直到表1中的全部元組都處理完畢注:連接操作的執(zhí)行過程,在第九章
關(guān)系查詢處理和查詢優(yōu)化中將比較詳細地講解,在愛課程網(wǎng)9.1節(jié)中還有《連接操作的實現(xiàn)》的動畫。這里只是先簡單介紹一下。
目前八頁\總數(shù)八十一頁\編于十六點連接操作的執(zhí)行過程(續(xù))(2)排序合并法(SORT-MERGE)常用于=連接首先按連接屬性對表1和表2排序?qū)Ρ?的第一個元組,從頭開始掃描表2,順序查找滿足連接條件的元組,找到后就將表1中的第一個元組與該元組拼接起來,形成結(jié)果表中一個元組。當遇到表2中第一條大于表1連接字段值的元組時,對表2的查詢不再繼續(xù)目前九頁\總數(shù)八十一頁\編于十六點連接操作的執(zhí)行過程(續(xù))(2)排序合并法(續(xù))找到表1的第二條元組,然后從剛才的中斷點處繼續(xù)順序掃描表2,查找滿足連接條件的元組,找到后就將表1中的第一個元組與該元組拼接起來,形成結(jié)果表中一個元組。直接遇到表2中大于表1連接字段值的元組時,對表2的查詢不再繼續(xù)重復上述操作,直到表1或表2中的全部元組都處理完畢為止目前十頁\總數(shù)八十一頁\編于十六點連接操作的執(zhí)行過程(續(xù))(3)索引連接(INDEX-JOIN)對表2按連接字段建立索引對表1中的每個元組,依次根據(jù)其連接字段值查詢表2的索引,從中找到滿足條件的元組,找到后就將表1中的第一個元組與該元組拼接起來,形成結(jié)果表中一個元組目前十一頁\總數(shù)八十一頁\編于十六點等值與非等值連接查詢(續(xù))自然連接[例3.50]對[例3.49]用自然連接完成。
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudent,SCWHEREStudent.Sno=SC.Sno;目前十二頁\總數(shù)八十一頁\編于十六點等值與非等值連接查詢(續(xù))一條SQL語句可以同時完成選擇和連接查詢,這時WHERE子句是由連接謂詞和選擇謂詞組成的復合條件。[例3.51]查詢選修2號課程且成績在90分以上的所有學生的學號和姓名。SELECTStudent.Sno,SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoAND SC.Cno='2'ANDSC.Grade>90;執(zhí)行過程:先從SC中挑選出Cno='2'并且Grade>90的元組形成一個中間關(guān)系再和Student中滿足連接條件的元組進行連接得到最終的結(jié)果關(guān)系目前十三頁\總數(shù)八十一頁\編于十六點連接查詢(續(xù))1.等值與非等值連接查詢2.自身連接3.外連接4.多表連接目前十四頁\總數(shù)八十一頁\編于十六點2.自身連接自身連接:一個表與其自己進行連接需要給表起別名以示區(qū)別由于所有屬性名都是同名屬性,因此必須使用別名前綴[例3.52]查詢每一門課的間接先修課(即先修課的先修課)
SELECTFIRST.Cno,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno;目前十五頁\總數(shù)八十一頁\編于十六點自身連接(續(xù))FIRST表(Course表)SECOND表(Course表)課程號Cno課程名Cname先行課Cpno學分Ccredit1數(shù)據(jù)庫542數(shù)學23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理27PASCAL語言64課程號Cno課程名Cname先行課Cpno學分Ccredit1數(shù)據(jù)庫542數(shù)學23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理27PASCAL語言64目前十六頁\總數(shù)八十一頁\編于十六點自身連接(續(xù))查詢結(jié)果:CnoPcno173556目前十七頁\總數(shù)八十一頁\編于十六點連接查詢(續(xù))1.等值與非等值連接查詢2.自身連接3.外連接4.多表連接目前十八頁\總數(shù)八十一頁\編于十六點3.外連接外連接與普通連接的區(qū)別普通連接操作只輸出滿足連接條件的元組外連接操作以指定表為連接主體,將主體表中不滿足連接條件的元組一并輸出
左外連接列出左邊關(guān)系中所有的元組右外連接列出右邊關(guān)系中所有的元組
目前十九頁\總數(shù)八十一頁\編于十六點外連接(續(xù))[例3.
53]改寫[例3.49]
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudentLEFTOUTJOINSCON
(Student.Sno=SC.Sno);
目前二十頁\總數(shù)八十一頁\編于十六點外連接(續(xù))執(zhí)行結(jié)果:Student.SnoSnameSsexSageSdeptCnoGrade201215121李勇男20CS192201215121李勇男20CS285201215121李勇男20CS388201215122劉晨女19CS290201215122劉晨女19CS380201215123王敏女18MANULLNULL201215125張立男19ISNULLNULL目前二十一頁\總數(shù)八十一頁\編于十六點連接查詢(續(xù))1.等值與非等值連接查詢2.自身連接3.外連接4.多表連接目前二十二頁\總數(shù)八十一頁\編于十六點4.多表連接多表連接:兩個以上的表進行連接[例3.54]查詢每個學生的學號、姓名、選修的課程名及成績
SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,Course/*多表連接*/WHEREStudent.Sno=SC.SnoANDSC.Cno=Course.Cno;
目前二十三頁\總數(shù)八十一頁\編于十六點3.4數(shù)據(jù)查詢3.4.1單表查詢3.4.2連接查詢3.4.3嵌套查詢3.4.4集合查詢基于派生表的查詢3.4.5Select語句的一般形式目前二十四頁\總數(shù)八十一頁\編于十六點嵌套查詢(續(xù))嵌套查詢概述一個SELECT-FROM-WHERE語句稱為一個查詢塊將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢
SELECTSname /*外層查詢/父查詢*/
FROMStudent
WHERESnoIN
(SELECTSno/*內(nèi)層查詢/子查詢*/
FROMSC
WHERECno='2');
目前二十五頁\總數(shù)八十一頁\編于十六點嵌套查詢(續(xù))上層的查詢塊稱為外層查詢或父查詢下層查詢塊稱為內(nèi)層查詢或子查詢SQL語言允許多層嵌套查詢即一個子查詢中還可以嵌套其他子查詢子查詢的限制不能使用ORDERBY子句目前二十六頁\總數(shù)八十一頁\編于十六點嵌套查詢求解方法不相關(guān)子查詢:子查詢的查詢條件不依賴于父查詢由里向外逐層處理。即每個子查詢在上一級查詢處理之前求解,子查詢的結(jié)果用于建立其父查詢的查找條件。目前二十七頁\總數(shù)八十一頁\編于十六點嵌套查詢求解方法(續(xù))相關(guān)子查詢:子查詢的查詢條件依賴于父查詢首先取外層查詢中表的第一個元組,根據(jù)它與內(nèi)層查詢相關(guān)的屬性值處理內(nèi)層查詢,若WHERE子句返回值為真,則取此元組放入結(jié)果表然后再取外層表的下一個元組重復這一過程,直至外層表全部檢查完為止目前二十八頁\總數(shù)八十一頁\編于十六點3.4.3嵌套查詢1.帶有IN謂詞的子查詢
2.帶有比較運算符的子查詢
3.帶有ANY(SOME)或ALL謂詞的子查詢
4.帶有EXISTS謂詞的子查詢目前二十九頁\總數(shù)八十一頁\編于十六點1.帶有IN謂詞的子查詢[例3.55]查詢與“劉晨”在同一個系學習的學生。
此查詢要求可以分步來完成①確定“劉晨”所在系名
SELECTSdeptFROMStudentWHERESname='劉晨';
結(jié)果為:CS目前三十頁\總數(shù)八十一頁\編于十六點帶有IN謂詞的子查詢(續(xù))②查找所有在CS系學習的學生。
SELECTSno,Sname,SdeptFROMStudentWHERESdept='CS';結(jié)果為:SnoSnameSdept201215121李勇CS201215122劉晨CS目前三十一頁\總數(shù)八十一頁\編于十六點帶有IN謂詞的子查詢(續(xù))將第一步查詢嵌入到第二步查詢的條件中
SELECTSno,Sname,Sdept FROMStudent WHERESdeptIN
(SELECTSdeptFROMStudentWHERESname='
劉晨');此查詢?yōu)椴幌嚓P(guān)子查詢。目前三十二頁\總數(shù)八十一頁\編于十六點帶有IN謂詞的子查詢(續(xù))
用自身連接完成[例3.55]查詢要求
SELECTS1.Sno,S1.Sname,S1.SdeptFROMStudentS1,StudentS2WHERES1.Sdept=S2.SdeptAND
S2.Sname='劉晨';目前三十三頁\總數(shù)八十一頁\編于十六點帶有IN謂詞的子查詢(續(xù))[例3.56]查詢選修了課程名為“信息系統(tǒng)”的學生學號和姓名
SELECTSno,Sname
③最后在Student關(guān)系中
FROMStudent
取出Sno和Sname WHERESnoIN
(SELECTSno②然后在SC關(guān)系中找出選
FROMSC修了3號課程的學生學號
WHERECnoIN
(SELECTCno①首先在Course關(guān)系中找出
FROMCourse“信息系統(tǒng)”的課程號,為3號
WHERECname='信息系統(tǒng)' )
);目前三十四頁\總數(shù)八十一頁\編于十六點帶有IN謂詞的子查詢(續(xù))用連接查詢實現(xiàn)[例3.56]:
SELECTSno,SnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDCourse.Cname='信息系統(tǒng)';目前三十五頁\總數(shù)八十一頁\編于十六點3.4.3嵌套查詢1.帶有IN謂詞的子查詢
2.帶有比較運算符的子查詢
3.帶有ANY(SOME)或ALL謂詞的子查詢
4.帶有EXISTS謂詞的子查詢目前三十六頁\總數(shù)八十一頁\編于十六點2.帶有比較運算符的子查詢
當能確切知道內(nèi)層查詢返回單值時,可用比較運算符(>,<,=,>=,<=,!=或<>)。在[例3.55]中,由于一個學生只可能在一個系學習,則可以用=代替IN
:
SELECTSno,Sname,SdeptFROMStudentWHERESdept=
(SELECTSdeptFROMStudentWHERESname='劉晨');目前三十七頁\總數(shù)八十一頁\編于十六點帶有比較運算符的子查詢(續(xù))[例3.57]找出每個學生超過他選修課程平均成績的課程號。
SELECTSno,CnoFROMSCxWHEREGrade>=(SELECTAVG(Grade) FROMSCyWHEREy.Sno=x.Sno);相關(guān)子查詢目前三十八頁\總數(shù)八十一頁\編于十六點帶有比較運算符的子查詢(續(xù))可能的執(zhí)行過程從外層查詢中取出SC的一個元組x,將元組x的Sno值(201215121)傳送給內(nèi)層查詢。
SELECTAVG(Grade)
FROMSCy
WHEREy.Sno='201215121‘;目前三十九頁\總數(shù)八十一頁\編于十六點帶有比較運算符的子查詢(續(xù))可能的執(zhí)行過程(續(xù))執(zhí)行內(nèi)層查詢,得到值88(近似值),用該值代替內(nèi)層查詢,得到外層查詢:
SELECTSno,Cno
FROMSCx
WHEREGrade>=88;目前四十頁\總數(shù)八十一頁\編于十六點帶有比較運算符的子查詢(續(xù))可能的執(zhí)行過程(續(xù))執(zhí)行這個查詢,得到 (201215121,1) (201215121,3) 然后外層查詢?nèi)〕鱿乱粋€元組重復做上述①至③步驟,直到外層的SC元組全部處理完畢。結(jié)果為:
(201215121,1) (201215121,3) (201215122,2)目前四十一頁\總數(shù)八十一頁\編于十六點3.4.3嵌套查詢1.帶有IN謂詞的子查詢
2.帶有比較運算符的子查詢
3.帶有ANY(SOME)或ALL謂詞的子查詢
4.帶有EXISTS謂詞的子查詢目前四十二頁\總數(shù)八十一頁\編于十六點帶有ANY(SOME)或ALL謂詞的子查詢(續(xù))使用ANY或ALL謂詞時必須同時使用比較運算語義為:>ANY 大于子查詢結(jié)果中的某個值>ALL 大于子查詢結(jié)果中的所有值<ANY 小于子查詢結(jié)果中的某個值<ALL 小于子查詢結(jié)果中的所有值>=ANY 大于等于子查詢結(jié)果中的某個值>=ALL 大于等于子查詢結(jié)果中的所有值目前四十三頁\總數(shù)八十一頁\編于十六點帶有ANY(SOME)或ALL謂詞的子查詢(續(xù))使用ANY或ALL謂詞時必須同時使用比較運算語義為(續(xù))<=ANY 小于等于子查詢結(jié)果中的某個值<=ALL 小于等于子查詢結(jié)果中的所有值=ANY 等于子查詢結(jié)果中的某個值=ALL 等于子查詢結(jié)果中的所有值(通常沒有實際意義)!=(或<>)ANY 不等于子查詢結(jié)果中的某個值!=(或<>)ALL 不等于子查詢結(jié)果中的任何一個值目前四十四頁\總數(shù)八十一頁\編于十六點帶有ANY(SOME)或ALL謂詞的子查詢(續(xù))[例3.58]查詢非計算機科學系中比計算機科學系任意一個學生年齡小的學生姓名和年齡
SELECTSname,SageFROMStudentWHERESage<ANY
(SELECTSageFROMStudentWHERESdept='CS')
ANDSdept<>‘CS'
;/*父查詢塊中的條件*/目前四十五頁\總數(shù)八十一頁\編于十六點帶有ANY(SOME)或ALL謂詞的子查詢(續(xù))結(jié)果:
執(zhí)行過程:
(1)首先處理子查詢,找出CS系中所有學生的年齡,構(gòu)成一個集合(20,19)
(2)處理父查詢,找所有不是CS系且年齡小于
20或19的學生SnameSage王敏18張立19目前四十六頁\總數(shù)八十一頁\編于十六點帶有ANY(SOME)或ALL謂詞的子查詢(續(xù))用聚集函數(shù)實現(xiàn)[例3.58]
SELECTSname,SageFROMStudentWHERESage<
(SELECTMAX(Sage)
FROMStudent
WHERESdept='CS')ANDSdept<>'CS';目前四十七頁\總數(shù)八十一頁\編于十六點帶有ANY(SOME)或ALL謂詞的子查詢(續(xù))[例3.59]查詢非計算機科學系中比計算機科學系所有學生年齡都小的學生姓名及年齡。方法一:用ALL謂詞
SELECTSname,SageFROMStudentWHERESage<ALL
(SELECTSageFROMStudentWHERESdept='CS')ANDSdept<>'CS’;目前四十八頁\總數(shù)八十一頁\編于十六點帶有ANY(SOME)或ALL謂詞的子查詢(續(xù))
方法二:用聚集函數(shù)
SELECTSname,SageFROMStudentWHERESage<
(SELECTMIN(Sage)FROMStudentWHERESdept='CS')ANDSdept<>'CS';目前四十九頁\總數(shù)八十一頁\編于十六點帶有ANY(SOME)或ALL謂詞的子查詢(續(xù)) 表3.7ANY(或SOME),ALL謂詞與聚集函數(shù)、IN謂詞的等價轉(zhuǎn)換關(guān)系
=
<>或!=<<=>>=ANY
IN
--
<MAX<=MAX>MIN>=MINALL--
NOTIN
<MIN<=MIN>MAX>=MAX目前五十頁\總數(shù)八十一頁\編于十六點3.4.3嵌套查詢1.帶有IN謂詞的子查詢
2.帶有比較運算符的子查詢
3.帶有ANY(SOME)或ALL謂詞的子查詢
4.帶有EXISTS謂詞的子查詢目前五十一頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢EXISTS謂詞存在量詞
帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值“true”或邏輯假值“false”。若內(nèi)層查詢結(jié)果非空,則外層的WHERE子句返回真值若內(nèi)層查詢結(jié)果為空,則外層的WHERE子句返回假值由EXISTS引出的子查詢,其目標列表達式通常都用*,因為帶EXISTS的子查詢只返回真值或假值,給出列名無實際意義。目前五十二頁\總數(shù)八十一頁\編于十六點NOTEXISTS謂詞若內(nèi)層查詢結(jié)果非空,則外層的WHERE子句返回假值若內(nèi)層查詢結(jié)果為空,則外層的WHERE子句返回真值帶有EXISTS謂詞的子查詢(續(xù))目前五十三頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))[例3.60]查詢所有選修了1號課程的學生姓名。思路分析:本查詢涉及Student和SC關(guān)系在Student中依次取每個元組的Sno值,用此值去檢查SC表若SC中存在這樣的元組,其Sno值等于此Student.Sno值,并且其Cno=‘1’,則取此Student.Sname送入結(jié)果表
SELECTSnameFROMStudentWHEREEXISTS
(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');
目前五十四頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))[例3.61]查詢沒有選修1號課程的學生姓名。
SELECTSnameFROMStudentWHERENOTEXISTS
(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');目前五十五頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))
不同形式的查詢間的替換一些帶EXISTS或NOTEXISTS謂詞的子查詢不能被其他形式的子查詢等價替換所有帶IN謂詞、比較運算符、ANY和ALL謂詞的子查詢都能用帶EXISTS謂詞的子查詢等價替換用EXISTS/NOTEXISTS實現(xiàn)全稱量詞(難點)SQL語言中沒有全稱量詞(Forall)可以把帶有全稱量詞的謂詞轉(zhuǎn)換為等價的帶有存在量詞的謂詞:
(x)P≡
(
x(
P))
目前五十六頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))[例3.55]查詢與“劉晨”在同一個系學習的學生。可以用帶EXISTS謂詞的子查詢替換:
SELECTSno,Sname,SdeptFROMStudentS1WHEREEXISTS
(SELECT*FROMStudentS2WHERES2.Sdept=S1.SdeptANDS2.Sname='劉晨');目前五十七頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))[例3.62]查詢選修了全部課程的學生姓名。
SELECTSnameFROMStudentWHERENOTEXISTS
(SELECT*FROMCourseWHERENOTEXISTS
(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno
));參見愛課程網(wǎng)數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)查詢節(jié)動畫《EXISTS子查詢》目前五十八頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))
用EXISTS/NOTEXISTS實現(xiàn)邏輯蘊涵(難點)SQL語言中沒有蘊涵(Implication)邏輯運算可以利用謂詞演算將邏輯蘊涵謂詞等價轉(zhuǎn)換為:
pq≡p∨q目前五十九頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))[例3.63]查詢至少選修了學生201215122選修的全部課程的學生號碼。解題思路:用邏輯蘊涵表達:查詢學號為x的學生,對所有的課程y,只要201215122學生選修了課程y,則x也選修了y。形式化表示: 用P表示謂詞“學生201215122選修了課程y”
用q表示謂詞“學生x選修了課程y”
則上述查詢?yōu)?(y)pq目前六十頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))等價變換:
(y)pq≡
(y((pq
))≡
(y((
p∨q)))≡
y(p∧q)變換后語義:不存在這樣的課程y,學生201215122選修了y,而學生x沒有選。目前六十一頁\總數(shù)八十一頁\編于十六點帶有EXISTS謂詞的子查詢(續(xù))
用NOTEXISTS謂詞表示:
SELECTDISTINCTSno
FROMSCSCXWHERENOTEXISTS
(SELECT*FROMSCSCYWHERESCY.Sno='201215122'ANDNOTEXISTS
(SELECT*FROMSCSCZWHERESCZ.Sno=SCX.SnoANDSCZ.Cno=SCY.Cno));目前六十二頁\總數(shù)八十一頁\編于十六點3.4數(shù)據(jù)查詢3.4.1單表查詢3.4.2連接查詢3.4.3嵌套查詢3.4.4集合查詢基于派生表的查詢3.4.5Select語句的一般形式目前六十三頁\總數(shù)八十一頁\編于十六點3.4.4集合查詢集合操作的種類并操作UNION交操作INTERSECT差操作EXCEPT參加集合操作的各查詢結(jié)果的列數(shù)必須相同;對應項的數(shù)據(jù)類型也必須相同目前六十四頁\總數(shù)八十一頁\編于十六點集合查詢(續(xù))[例3.64]查詢計算機科學系的學生及年齡不大于19歲的學生。SELECT*FROMStudentWHERESdept='CS'UNIONSELECT*FROMStudentWHERESage<=19;UNION:將多個查詢結(jié)果合并起來時,系統(tǒng)自動去掉重復元組UNIONALL:將多個查詢結(jié)果合并起來時,保留重復元組目前六十五頁\總數(shù)八十一頁\編于十六點集合查詢(續(xù))[例3.65]查詢選修了課程1或者選修了課程2的學生。
SELECTSnoFROMSCWHERECno='1'UNIONSELECTSnoFROMSCWHERECno='2';目前六十六頁\總數(shù)八十一頁\編于十六點集合查詢(續(xù))[例3.66]查詢計算機科學系的學生與年齡不大于19歲的學生 的交集。SELECT*FROMStudentWHERESdept='CS'INTERSECTSELECT*FROMStudentWHERESage<=19
目前六十七頁\總數(shù)八十一頁\編于十六點集合查詢(續(xù))[例3.66]實際上就是查詢計算機科學系中年齡不大 于19歲的學生。
SELECT* FROMStudent WHERESdept='CS'ANDSage<=19;目前六十八頁\總數(shù)八十一頁\編于十六點集合查詢(續(xù))[例3.67]查詢既選修了課程1又選修了課程2的學生。
SELECTSnoFROMSCWHERECno='1'INTERSECTSELECTSnoFROMSCWHERECno='2';目前六十九頁\總數(shù)八十一頁\編于十六點集合查詢(續(xù))[例3.67]也可以表示為:
SELECTSnoFROMSCWHERECno='1'ANDSnoIN
(SELECTSnoFROMSCWHERECno='2');目前七十頁\總數(shù)八十一頁\編于十六點集合查詢(續(xù))[例3.68]查詢計算機科學系的學生與年齡不大于19歲的學生的差集。
SELECT*FROMStudentWHERESdept='CS'EXCEPTSELECT*FROMStudentWHERESage<=19;目前七十一頁\總數(shù)八十一頁\編于十六點集合查詢(續(xù))[例3.68]實際上是查詢計算機科學系中年齡大于19歲的學生
SELECT*FROMStudentWHERESdept='CS'ANDSage>19;目前七十二頁\總數(shù)八十一頁\編于十六點3.4數(shù)據(jù)查詢3.4.1單表查詢3.4.2連接查詢3.4.3嵌套查詢3.4.4集合查詢基于派生表的查詢3.4.6Select語句的一般形式目前七十三頁\總數(shù)八十一頁\編于十六點3.4.5基于派生表的查詢子查詢不僅可以出現(xiàn)在WHERE子句中,還可以出現(xiàn)在FROM子句中,這時子查詢生成的臨時派生表(DerivedTable)成為主查詢的查詢對象[例3.57]找出每個學生超過他自己選修課程平均成績的課程號
SELECTSno,CnoFROMSC,(SELECTSno,Avg(Grade)
FROMSC GROUPBYSno)ASAvg_sc(avg_sno,avg_grade)WHER
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度自然災害受損建筑物拆除與重建援助合同3篇
- 公墓墓位買賣與墓園墓碑雕刻服務協(xié)議3篇
- 二零二五年度家庭式兼職煮飯衛(wèi)生協(xié)議2篇
- 2024純電動物流專用車租賃合同
- 2025年度手摩托車轉(zhuǎn)讓及賽車改裝技術(shù)支持協(xié)議3篇
- 二零二五年度房產(chǎn)交易智能家居升級合同3篇
- 二零二五年度2025年度海洋工程建設項目總價包干施工合同3篇
- 二零二五年度城市綠化采購框架合同3篇
- 塘廈夾芯板隔墻施工方案
- 2024生豬運輸企業(yè)信用評價與激勵合同模板3篇
- 氨堿法純堿生產(chǎn)工藝概述
- 基礎化工行業(yè)深度:電解液新型鋰鹽材料之雙氟磺酰亞胺鋰(LiFSI)市場潛力可觀新型鋰鹽LiFSI國產(chǎn)化進程加速
- 年產(chǎn)10000噸一次性自然降解環(huán)保紙漿模塑餐具自動化生產(chǎn)線技改項目環(huán)境影響報告表
- 實戰(zhàn)銷售培訓講座(共98頁).ppt
- 測控電路第7章信號細分與辨向電路
- 哈爾濱工業(yè)大學信紙模版
- 氨的飽和蒸汽壓表
- 指揮中心大廳及機房裝修施工組織方案
- 餐飲店應聘人員面試測評表
- APQP全套表格最新版(共98頁)
- 六年級上冊數(shù)學試題-天津河西區(qū)2018-2019學年度期末考試人教新課標含答案
評論
0/150
提交評論