![數(shù)據(jù)庫(kù)第三章演示文稿_第1頁(yè)](http://file4.renrendoc.com/view/e2201da972485e7babe2ffc39fc55700/e2201da972485e7babe2ffc39fc557001.gif)
![數(shù)據(jù)庫(kù)第三章演示文稿_第2頁(yè)](http://file4.renrendoc.com/view/e2201da972485e7babe2ffc39fc55700/e2201da972485e7babe2ffc39fc557002.gif)
![數(shù)據(jù)庫(kù)第三章演示文稿_第3頁(yè)](http://file4.renrendoc.com/view/e2201da972485e7babe2ffc39fc55700/e2201da972485e7babe2ffc39fc557003.gif)
![數(shù)據(jù)庫(kù)第三章演示文稿_第4頁(yè)](http://file4.renrendoc.com/view/e2201da972485e7babe2ffc39fc55700/e2201da972485e7babe2ffc39fc557004.gif)
![數(shù)據(jù)庫(kù)第三章演示文稿_第5頁(yè)](http://file4.renrendoc.com/view/e2201da972485e7babe2ffc39fc55700/e2201da972485e7babe2ffc39fc557005.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)第三章演示文稿當(dāng)前第1頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)優(yōu)選數(shù)據(jù)庫(kù)第三章當(dāng)前第2頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)第三章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫(kù)3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7小結(jié)當(dāng)前第3頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)數(shù)據(jù)查詢語(yǔ)句格式SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]];
當(dāng)前第4頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)語(yǔ)句格式SELECT子句:指定要顯示的屬性列FROM子句:指定查詢對(duì)象(基本表或視圖)WHERE子句:指定查詢條件GROUPBY子句:對(duì)查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會(huì)在每組中作用集函數(shù)。HAVING短語(yǔ):篩選出只有滿足指定條件的組ORDERBY子句:對(duì)查詢結(jié)果表按指定列值的升序或降序排序當(dāng)前第5頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.4數(shù)據(jù)查詢3.4.1單表查詢3.4.2連接查詢3.4.3嵌套查詢3.4.4集合查詢3.4.5Select語(yǔ)句的一般形式當(dāng)前第6頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.4.1單表查詢
查詢僅涉及一個(gè)表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句當(dāng)前第7頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)查詢指定列:[例1]查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。SELECTSno,SnameFROMStudent;
[例2]查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。SELECTSname,Sno,SdeptFROMStudent;一、選擇表中的若干列當(dāng)前第8頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)查詢?nèi)苛衃例3]查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;
當(dāng)前第9頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)查詢經(jīng)過(guò)計(jì)算的值
SELECT子句的<目標(biāo)列表達(dá)式>為表達(dá)式算術(shù)表達(dá)式字符串常量函數(shù)列別名等
當(dāng)前第10頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.查詢經(jīng)過(guò)計(jì)算的值[例4]查全體學(xué)生的姓名及其出生年份。SELECTSname,2011-SageFROMStudent;
輸出結(jié)果:Sname2011-Sage----------------------李勇1976劉晨1977王名1978張立1978
當(dāng)前第11頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.查詢經(jīng)過(guò)計(jì)算的值[例5]查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名。SELECTSname,'YearofBirth:',2011-Sage,LOWER(Sdept)FROMStudent;
當(dāng)前第12頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))輸出結(jié)果:Sname'YearofBirth:'2000-SageLOWER(Sdept)----------------------------------------------李勇YearofBirth:1976cs劉晨YearofBirth:1977is王名YearofBirth:1978ma張立YearofBirth:1977is當(dāng)前第13頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))[例5.1]使用列別名改變查詢結(jié)果的列標(biāo)題SELECTSnameNAME,'YearofBirth:’BIRTH,2000-SageBIRTHDAY,LOWER(Sdept)DEPARTMENTFROMStudent;輸出結(jié)果:NAMEBIRTHBIRTHDAYDEPARTMENT------------------------------------------------------李勇YearofBirth:1976cs劉晨YearofBirth:1977is王名YearofBirth:1978ma張立YearofBirth:1977is當(dāng)前第14頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)二、選擇表中的若干元組
消除取值重復(fù)的行查詢滿足條件的元組當(dāng)前第15頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)1.消除取值重復(fù)的行在SELECT子句中使用DISTINCT短語(yǔ)假設(shè)SC表中有下列數(shù)據(jù)
SnoCnoGrade---------------------9500119295001285950013889500229095002380當(dāng)前第16頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)ALL與DISTINCT
[例6]查詢選修了課程的學(xué)生學(xué)號(hào)。(1)SELECTSnoFROMSC; 或(默認(rèn)ALL)SELECTALLSnoFROMSC;
結(jié)果:Sno-------9500195001950019500295002
當(dāng)前第17頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))(2)SELECTDISTINCTSnoFROMSC;
結(jié)果:Sno-------9500195002當(dāng)前第18頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))注意DISTINCT短語(yǔ)的作用范圍是所有目標(biāo)列例:查詢選修課程的各種成績(jī)錯(cuò)誤的寫法SELECTDISTINCTCno,DISTINCTGradeFROMSC;正確的寫法SELECTDISTINCTCno,GradeFROMSC;
當(dāng)前第19頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)查詢滿足條件的元組查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運(yùn)算)AND,OR,NOT表3.4常用的查詢條件當(dāng)前第20頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)(1)比較大小在WHERE子句的<比較條件>中使用比較運(yùn)算符=,>,<,>=,<=,!=或<>,!>,!<,邏輯運(yùn)算符NOT+比較運(yùn)算符[例8]查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。
SELECTSname,SageFROMStudentWHERESage<20;或SELECTSname,SageFROMStudentWHERENOTSage>=20;
當(dāng)前第21頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)(2)確定范圍使用謂詞BETWEEN…AND…NOTBETWEEN…AND…[例10]查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;
當(dāng)前第22頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))[例11]查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡。SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN20AND23;
當(dāng)前第23頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)(3)確定集合使用謂詞IN<值表>,NOTIN<值表><值表>:用逗號(hào)分隔的一組取值[例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS');當(dāng)前第24頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)(3)確定集合[例13]查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。SELECTSname,SsexFROMStudent WHERESdeptNOTIN('IS','MA','CS');當(dāng)前第25頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)(4)字符串匹配[NOT]LIKE‘<匹配串>’[ESCAPE‘<換碼字符>’]<匹配串>:指定匹配模板匹配模板:固定字符串或含通配符的字符串當(dāng)匹配模板為固定字符串時(shí),可以用=運(yùn)算符取代LIKE謂詞用!=或<>運(yùn)算符取代NOTLIKE謂詞當(dāng)前第26頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)通配符%(百分號(hào))代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串例:a%b表示以a開頭,以b結(jié)尾的任意長(zhǎng)度的字符串。如acb,addgb,ab等都滿足該匹配串_(下橫線)代表任意單個(gè)字符例:a_b表示以a開頭,以b結(jié)尾的長(zhǎng)度為3的任意字符串。如acb,afb等都滿足該匹配串當(dāng)前第27頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)ESCAPE短語(yǔ):當(dāng)用戶要查詢的字符串本身就含有%或_時(shí),要使用ESCAPE'<換碼字符>'短語(yǔ)對(duì)通配符進(jìn)行轉(zhuǎn)義。當(dāng)前第28頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題1)匹配模板為固定字符串[例14]查詢學(xué)號(hào)為95001的學(xué)生的詳細(xì)情況。SELECT*FROMStudentWHERESnoLIKE'95001';等價(jià)于: SELECT*FROMStudentWHERESno='95001';當(dāng)前第29頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))2)匹配模板為含通配符的字符串[例15]查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE‘劉%’;當(dāng)前第30頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))匹配模板為含通配符的字符串(續(xù))[例16]查詢姓“歐陽(yáng)”且全名為三個(gè)漢字的學(xué)生的姓名。SELECTSnameFROMStudentWHERESnameLIKE'歐陽(yáng)__';當(dāng)前第31頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))匹配模板為含通配符的字符串(續(xù))[例17]查詢名字中第2個(gè)字為“陽(yáng)”字的學(xué)生的姓名和學(xué)號(hào)。SELECTSname,SnoFROMStudentWHERESnameLIKE'__陽(yáng)%';當(dāng)前第32頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))匹配模板為含通配符的字符串(續(xù))[例18]查詢所有不姓劉的學(xué)生姓名。SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE'劉%';當(dāng)前第33頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))3)使用換碼字符將通配符轉(zhuǎn)義為普通字符[例19]查詢DB_Design課程的課程號(hào)和學(xué)分。SELECTCno,CcreditFROMCourseWHERECnameLIKE‘DB\_Design’ESCAPE‘\‘;[例20]查詢以“DB_”開頭,且倒數(shù)第3個(gè)字符為I的課程的詳細(xì)情況。SELECT*FROMCourseWHERECnameLIKE'DB\_%i__'ESCAPE'\';當(dāng)前第34頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)(5)涉及空值的查詢使用謂詞ISNULL或ISNOTNULL“ISNULL”不能用“=NULL”代替[例21]某些學(xué)生選修課程后沒(méi)有參加考試,所以有選課記錄,但沒(méi)有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。SELECTSno,CnoFROMSCWHEREGradeISNULL;當(dāng)前第35頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題(續(xù))
[例22]查所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;當(dāng)前第36頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)(6)多重條件查詢用邏輯運(yùn)算符AND和OR來(lái)聯(lián)結(jié)多個(gè)查詢條件AND的優(yōu)先級(jí)高于OR可以用括號(hào)改變優(yōu)先級(jí)可用來(lái)實(shí)現(xiàn)多種其他謂詞[NOT]IN[NOT]BETWEEN…AND…當(dāng)前第37頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題[例23]查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。SELECTSnameFROMStudentWHERESdept='CS'ANDSage<20;當(dāng)前第38頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)改寫[例12][例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS')可改寫為:SELECTSname,SsexFROMStudentWHERESdept='IS'ORSdept='MA'ORSdept='CS';當(dāng)前第39頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)改寫[例10][例10]查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。
SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;可改寫為:SELECTSname,Sdept,SageFROMStudentWHERESage>=20ANDSage<=23;當(dāng)前第40頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)三、對(duì)查詢結(jié)果排序
使用ORDERBY子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC;缺省值為升序當(dāng)排序列含空值時(shí)ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示當(dāng)前第41頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)對(duì)查詢結(jié)果排序(續(xù))
[例24]查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;
當(dāng)前第42頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)查詢結(jié)果
SnoGrade--------------9501095024950079295003829501082950097595014619500255當(dāng)前第43頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)對(duì)查詢結(jié)果排序(續(xù))
[例25]查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排列,同一系中的學(xué)生按年齡降序排列。SELECT*FROMStudentORDERBYSdept,SageDESC;
當(dāng)前第44頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)四、使用集函數(shù)
5類主要集函數(shù)計(jì)數(shù)COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL]<列名>)計(jì)算總和SUM([DISTINCT|ALL]<列名>) 計(jì)算平均值A(chǔ)VG([DISTINCT|ALL]<列名>)當(dāng)前第45頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)使用集函數(shù)(續(xù))
求最大值MAX([DISTINCT|ALL]<列名>)
求最小值
MIN([DISTINCT|ALL]<列名>) DISTINCT短語(yǔ):在計(jì)算時(shí)要取消指定列中的重復(fù)值A(chǔ)LL短語(yǔ):不取消重復(fù)值A(chǔ)LL為缺省值當(dāng)前第46頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)使用集函數(shù)(續(xù))[例26]查詢學(xué)生總?cè)藬?shù)。SELECTCOUNT(*)FROMStudent;
[例27]查詢選修了課程的學(xué)生人數(shù)。SELECTCOUNT(DISTINCTSno)FROMSC;注:用DISTINCT以避免重復(fù)計(jì)算學(xué)生人數(shù)當(dāng)前第47頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)使用集函數(shù)(續(xù))[例28]計(jì)算1號(hào)課程的學(xué)生平均成績(jī)。SELECTAVG(Grade)FROMSCWHERECno='1';
[例29]查詢選修1號(hào)課程的學(xué)生最高分?jǐn)?shù)。SELECTMAX(Grade)FROMSCWHERCno='1';
當(dāng)前第48頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)五、對(duì)查詢結(jié)果分組
使用GROUPBY子句分組 細(xì)化集函數(shù)的作用對(duì)象未對(duì)查詢結(jié)果分組,集函數(shù)將作用于整個(gè)查詢結(jié)果對(duì)查詢結(jié)果分組后,集函數(shù)將分別作用于每個(gè)組當(dāng)前第49頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)使用GROUPBY子句分組[例30]求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;
結(jié)果CnoCOUNT(Sno) 122 234 344 433 548當(dāng)前第50頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)對(duì)查詢結(jié)果分組(續(xù))GROUPBY子句的作用對(duì)象是查詢的中間結(jié)果表分組方法:按指定的一列或多列值分組,值相等的為一組使用GROUPBY子句后,SELECT子句的列名列表中只能出現(xiàn)分組屬性和集函數(shù)
當(dāng)前第51頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)使用HAVING短語(yǔ)篩選最終輸出結(jié)果只有滿足HAVING短語(yǔ)指定條件的組才輸出HAVING短語(yǔ)與WHERE子句的區(qū)別:作用對(duì)象不同WHERE子句作用于基表或視圖,從中選擇滿足條件的元組。HAVING短語(yǔ)作用于組,從中選擇滿足條件的組。
當(dāng)前第52頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)使用HAVING短語(yǔ)篩選最終輸出結(jié)果[例31]查詢選修了3門以上課程的學(xué)生學(xué)號(hào)。SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)>3;
當(dāng)前第53頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)例題[例32]查詢有3門以上課程是90分以上的學(xué)生的學(xué)號(hào)及(90分以上的)課程數(shù)SELECTSno,COUNT(*)FROMSCWHEREGrade>=90GROUPBYSnoHAVINGCOUNT(*)>=3;
當(dāng)前第54頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.3查詢
3.3.1概述3.3.2單表查詢3.3.3連接查詢3.3.4嵌套查詢3.3.5集合查詢3.3.6小結(jié)
當(dāng)前第55頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.3.3連接查詢
同時(shí)涉及多個(gè)表的查詢稱為連接查詢用來(lái)連接兩個(gè)表的條件稱為連接條件或連接謂詞一般格式:[<表名1>.]<列名1><比較運(yùn)算符>[<表名2>.]<列名2>比較運(yùn)算符:=、>、<、>=、<=、!=[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名2>.]<列名3>連接字段連接謂詞中的列名稱為連接字段連接條件中的各連接字段類型必須是可比的,但不必是相同的當(dāng)前第56頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)連接操作的執(zhí)行過(guò)程嵌套循環(huán)法(NESTED-LOOP)首先在表1中找到第一個(gè)元組,然后從頭開始掃描表2,逐一查找滿足連接條件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組。表2全部查找完后,再找表1中第二個(gè)元組,然后再?gòu)念^開始掃描表2,逐一查找滿足連接條件的元組,找到后就將表1中的第二個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組。重復(fù)上述操作,直到表1中的全部元組都處理完畢
當(dāng)前第57頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)排序合并法(SORT-MERGE)常用于=連接首先按連接屬性對(duì)表1和表2排序?qū)Ρ?的第一個(gè)元組,從頭開始掃描表2,順序查找滿足連接條件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組。當(dāng)遇到表2中第一條大于表1連接字段值的元組時(shí),對(duì)表2的查詢不再繼續(xù)當(dāng)前第58頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)排序合并法找到表1的第二條元組,然后從剛才的中斷點(diǎn)處繼續(xù)順序掃描表2,查找滿足連接條件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組。直接遇到表2中大于表1連接字段值的元組時(shí),對(duì)表2的查詢不再繼續(xù)重復(fù)上述操作,直到表1或表2中的全部元組都處理完畢為止當(dāng)前第59頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)索引連接(INDEX-JOIN)對(duì)表2按連接字段建立索引對(duì)表1中的每個(gè)元組,依次根據(jù)其連接字段值查詢表2的索引,從中找到滿足條件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組當(dāng)前第60頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)連接查詢(續(xù))SQL中連接查詢的主要類型 廣義笛卡爾積 等值連接(含自然連接) 非等值連接查詢 自身連接查詢 外連接查詢 復(fù)合條件連接查詢當(dāng)前第61頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)一、廣義笛卡爾積
不帶連接謂詞的連接很少使用例:SELECTStudent.*,SC.*FROMStudent,SC當(dāng)前第62頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)二、等值與非等值連接查詢
等值連接、自然連接、非等值連接連接運(yùn)算符為=的連接操作[<表名1>.]<列名1>=[<表名2>.]<列名2>任何子句中引用表1和表2中同名屬性時(shí),都必須加表名前綴。引用唯一屬性名時(shí)可以加也可以省略表名前綴。
[例32]查詢每個(gè)學(xué)生及其選修課程的情況。SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno;當(dāng)前第63頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)二、等值與非等值連接查詢Student.SnoSnameSsexSageSdeptSC.SnoCnoGrade200215121李勇男20CS200215121192200215121李勇男20CS200215121285200215121李勇男20CS200215121388200215122劉晨女19CS200215122290200215122劉晨女19CS200215122380當(dāng)前第64頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)自然連接等值連接的一種特殊情況,把目標(biāo)列中重復(fù)的屬性列去掉。[例33]對(duì)[例32]用自然連接完成。SELECT
Student.Sno,Sname,Ssex,Sage, Sdept,Cno,GradeFROMStudent,SCWHEREStudent.Sno=SC.Sno;當(dāng)前第65頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)非等值連接查詢連接運(yùn)算符不是=的連接操作
[<表名1>.]<列名1><比較運(yùn)算符>[<表名2>.]<列名2>比較運(yùn)算符:>、<、>=、<=、!=[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名2>.]<列名3>
當(dāng)前第66頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)三、自身連接
一個(gè)表與其自己進(jìn)行連接,稱為表的自身連接需要給表起別名以示區(qū)別由于所有屬性名都是同名屬性,因此必須使用別名前綴當(dāng)前第67頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)自身連接(續(xù))[例34]查詢每一門課的間接先修課(即先修課的先修課)SELECTFIRST.Cno,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno;
當(dāng)前第68頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)自身連接(續(xù))FIRST表(Course表)
CnoCnameCpnoCcredit1數(shù)據(jù)庫(kù)542數(shù)學(xué)
23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理
27PASCAL語(yǔ)言64SECOND表(Course表)
CnoCnameCpnoCcredit1數(shù)據(jù)庫(kù)542數(shù)學(xué)
23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理
27PASCAL語(yǔ)言64當(dāng)前第69頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)自身連接(續(xù))查詢結(jié)果
CnoPcno173556當(dāng)前第70頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)四、外連接外連接與普通連接的區(qū)別普通連接操作只輸出滿足連接條件的元組外連接操作以指定表為連接主體,將主體表中不滿足連接條件的元組一并輸出[例36]改寫[例33]SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudentLEFTOUTJOINSCON(Student.Sno=SC.Sno);
當(dāng)前第71頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)外連接(續(xù))
執(zhí)行結(jié)果:
Student.SnoSnameSsexSageSdeptCnoGrade200215121李勇男20CS192200215121李勇男20CS285200215121李勇男20CS388200215122劉晨女19CS290200215122劉晨女19CS380200215123王敏女18MANULLNULL200215125張立男19ISNULLNULL當(dāng)前第72頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)外連接(續(xù))
左外連接列出左邊關(guān)系(如本例Student)中所有的元組
右外連接列出右邊關(guān)系中所有的元組
當(dāng)前第73頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)五、復(fù)合條件連接WHERE子句中含多個(gè)連接條件時(shí),稱為復(fù)合條件連接[例35]查詢選修2號(hào)課程且成績(jī)?cè)?0分以上的所有學(xué)生的學(xué)號(hào)、姓名
SELECTStudent.Sno,student.SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoAND/*連接謂詞*/SC.Cno='2'AND/*其他限定條件*/SC.Grade>90;/*其他限定條件*/當(dāng)前第74頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)多表連接[例36]查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名、選修的課程名及成績(jī)。SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoandSC.Cno=Course.Cno;
結(jié)果: Student.SnoSnameCnameGrade 95001李勇數(shù)據(jù)庫(kù)9295001李勇數(shù)學(xué)8595001李勇信息系統(tǒng)8895002劉晨數(shù)學(xué)9095002劉晨信息系統(tǒng)80
當(dāng)前第75頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.3查詢
3.3.1概述3.3.2單表查詢3.3.3連接查詢3.3.4嵌套查詢3.3.5集合查詢3.3.6小結(jié)
當(dāng)前第76頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.3.4嵌套查詢嵌套查詢概述嵌套查詢分類嵌套查詢求解方法引出子查詢的謂詞
當(dāng)前第77頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)嵌套查詢(續(xù))嵌套查詢概述一個(gè)SELECT-FROM-WHERE語(yǔ)句稱為一個(gè)查詢塊將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語(yǔ)的條件中的查詢稱為嵌套查詢
當(dāng)前第78頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)嵌套查詢(續(xù))SELECTSname 外層查詢/父查詢FROMStudentWHERESnoIN(SELECTSno內(nèi)層查詢/子查詢FROMSCWHERECno='2');當(dāng)前第79頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)嵌套查詢(續(xù))子查詢的限制不能使用ORDERBY子句層層嵌套方式反映了SQL語(yǔ)言的結(jié)構(gòu)化有些嵌套查詢可以用連接運(yùn)算替代當(dāng)前第80頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)嵌套查詢分類不相關(guān)子查詢子查詢的查詢條件不依賴于父查詢相關(guān)子查詢子查詢的查詢條件依賴于父查詢當(dāng)前第81頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)嵌套查詢求解方法不相關(guān)子查詢是由里向外逐層處理。即每個(gè)子查詢?cè)谏弦患?jí)查詢處理之前求解,子查詢的結(jié)果用于建立其父查詢的查找條件。當(dāng)前第82頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)嵌套查詢求解方法(續(xù))相關(guān)子查詢首先取外層查詢中表的第一個(gè)元組,根據(jù)它與內(nèi)層查詢相關(guān)的屬性值處理內(nèi)層查詢,若WHERE子句返回值為真,則取此元組放入結(jié)果表;然后再取外層表的下一個(gè)元組;重復(fù)這一過(guò)程,直至外層表全部檢查完為止。當(dāng)前第83頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)引出子查詢的謂詞帶有IN謂詞的子查詢帶有比較運(yùn)算符的子查詢帶有ANY或ALL謂詞的子查詢帶有EXISTS謂詞的子查詢當(dāng)前第84頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)一、帶有IN謂詞的子查詢[例37]查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生。此查詢要求可以分步來(lái)完成①確定“劉晨”所在系名
SELECTSdeptFROMStudentWHERESname='劉晨';
結(jié)果為:
Sdept IS當(dāng)前第85頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有IN謂詞的子查詢(續(xù))②查找所有在IS系學(xué)習(xí)的學(xué)生。SELECTSno,Sname,SdeptFROMStudentWHERESdept='IS';結(jié)果為:SnoSnameSdept95001劉晨IS95004張立IS當(dāng)前第86頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)構(gòu)造嵌套查詢將第一步查詢嵌入到第二步查詢的條件中SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname=‘劉晨’);此查詢?yōu)椴幌嚓P(guān)子查詢。DBMS求解該查詢時(shí)也是分步去做的。當(dāng)前第87頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有IN謂詞的子查詢(續(xù))用自身連接完成本查詢要求SELECT
S1.Sno,S1.Sname,S1.SdeptFROMStudentS1,StudentS2WHERES1.Sdept=S2.SdeptAND
S2.Sname='劉晨';當(dāng)前第88頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有IN謂詞的子查詢(續(xù))父查詢和子查詢中的表均可以定義別名SELECTSno,Sname,SdeptFROMStudentS1WHERES1.SdeptIN(SELECTSdeptFROMStudentS2WHERES2.Sname=‘劉晨’);當(dāng)前第89頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有IN謂詞的子查詢(續(xù))[例38]查詢選修了課程名為“信息系統(tǒng)”的學(xué)生學(xué)號(hào)和姓名SELECTSno,Sname③最后在Student關(guān)系中FROMStudent取出Sno和SnameWHERESnoIN(SELECTSno②然后在SC關(guān)系中找出選FROMSC修了3號(hào)課程的學(xué)生學(xué)號(hào)WHERECnoIN(SELECTCno①首先在Course關(guān)系中找出“信FROMCourse息系統(tǒng)”的課程號(hào),結(jié)果為3號(hào)WHERECname=‘信息系統(tǒng)’));當(dāng)前第90頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有IN謂詞的子查詢(續(xù))結(jié)果:Sno Sname---------95001李勇95002劉晨當(dāng)前第91頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有IN謂詞的子查詢(續(xù))用連接查詢SELECTSno,SnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDCourse.Cname=‘信息系統(tǒng)’;當(dāng)前第92頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)二、帶有比較運(yùn)算符的子查詢當(dāng)能確切知道內(nèi)層查詢返回單值時(shí),可用比較運(yùn)算符(>,<,=,>=,<=,!=或<>)。與ANY或ALL謂詞配合使用當(dāng)前第93頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有比較運(yùn)算符的子查詢(續(xù))例:假設(shè)一個(gè)學(xué)生只可能在一個(gè)系學(xué)習(xí),并且必須屬于一個(gè)系,則在[例37]可以用=代替IN:SELECTSno,Sname,SdeptFROMStudentWHERESdept=SELECTSdeptFROMStudentWHERESname='劉晨';當(dāng)前第94頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有比較運(yùn)算符的子查詢(續(xù))子查詢一定要跟在比較符之后錯(cuò)誤的例子:SELECTSno,Sname,SdeptFROMStudentWHERE(SELECTSdeptFROMStudentWHERESname=‘劉晨’)
=Sdept;當(dāng)前第95頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)三、帶有ANY或ALL謂詞的子查詢謂詞語(yǔ)義ANY:任意一個(gè)值A(chǔ)LL:所有值當(dāng)前第96頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有ANY或ALL謂詞的子查詢(續(xù))需要配合使用比較運(yùn)算符>ANY 大于子查詢結(jié)果中的某個(gè)值>ALL 大于子查詢結(jié)果中的所有值<ANY 小于子查詢結(jié)果中的某個(gè)值<ALL 小于子查詢結(jié)果中的所有值>=ANY 大于等于子查詢結(jié)果中的某個(gè)值>=ALL 大于等于子查詢結(jié)果中的所有值<=ANY 小于等于子查詢結(jié)果中的某個(gè)值<=ALL 小于等于子查詢結(jié)果中的所有值=ANY 等于子查詢結(jié)果中的某個(gè)值=ALL 等于子查詢結(jié)果中的所有值(通常沒(méi)有實(shí)際意義)!=(或<>)ANY 不等于子查詢結(jié)果中的某個(gè)值!=(或<>)ALL 不等于子查詢結(jié)果中的任何一個(gè)值當(dāng)前第97頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有ANY或ALL謂詞的子查詢(續(xù))[例39]查詢其他系中比信息系任意一個(gè)(其中某一個(gè))學(xué)生年齡小的學(xué)生姓名和年齡SELECTSname,SageFROMStudentWHERESage<ANY(SELECTSageFROMStudentWHERESdept='IS')
ANDSdept<>'IS';
/*注意這是父查詢塊中的條件*/當(dāng)前第98頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有ANY或ALL謂詞的子查詢(續(xù))結(jié)果
SnameSage王敏18執(zhí)行過(guò)程1.DBMS執(zhí)行此查詢時(shí),首先處理子查詢,找出IS系中所有學(xué)生的年齡,構(gòu)成一個(gè)集合(19,18)2.處理父查詢,找所有不是IS系且年齡小于19或18的學(xué)生當(dāng)前第99頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有ANY或ALL謂詞的子查詢(續(xù))ANY和ALL謂詞有時(shí)可以用集函數(shù)實(shí)現(xiàn)ANY與ALL與集函數(shù)的對(duì)應(yīng)關(guān)系
=
<>或!=
<<=>>=ANY
IN
--
<MAX<=MAX>MIN>=MINALL--
NOTIN
<MIN<=MIN>MAX>=MAX用集函數(shù)實(shí)現(xiàn)子查詢通常比直接用ANY或ALL查詢效率要高,因?yàn)榍罢咄ǔD軌驕p少比較次數(shù)當(dāng)前第100頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有ANY或ALL謂詞的子查詢(續(xù))[例39']:用集函數(shù)實(shí)現(xiàn)[例39]SELECTSname,SageFROMStudentWHERESage<(SELECTMAX(Sage)FROMStudentWHERESdept='IS')ANDSdept<>'IS’;當(dāng)前第101頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有ANY或ALL謂詞的子查詢(續(xù))[例40]查詢其他系中比信息系所有學(xué)生年齡都小的學(xué)生姓名及年齡。方法一:用ALL謂詞SELECTSname,SageFROMStudentWHERESage<ALL(SELECTSageFROMStudentWHERESdept='IS')ANDSdept<>'IS’;查詢結(jié)果為空表。當(dāng)前第102頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有ANY或ALL謂詞的子查詢(續(xù))方法二:用集函數(shù)SELECTSname,SageFROMStudentWHERESage<(SELECTMIN(Sage)FROMStudentWHERESdept='IS')ANDSdept<>'IS’;當(dāng)前第103頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)四、帶有EXISTS謂詞的子查詢1.EXISTS謂詞2.NOTEXISTS謂詞3.不同形式的查詢間的替換4.相關(guān)子查詢的效率5.用EXISTS/NOTEXISTS實(shí)現(xiàn)全稱量詞(略)6.用EXISTS/NOTEXISTS實(shí)現(xiàn)邏輯蘊(yùn)函(略)當(dāng)前第104頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))1.EXISTS謂詞存在量詞
帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值“true”或邏輯假值“false”。若內(nèi)層查詢結(jié)果非空,則返回真值若內(nèi)層查詢結(jié)果為空,則返回假值由EXISTS引出的子查詢,其目標(biāo)列表達(dá)式通常都用*,因?yàn)閹XISTS的子查詢只返回真值或假值,給出列名無(wú)實(shí)際意義2.NOTEXISTS謂詞當(dāng)前第105頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))[例41]查詢所有選修了1號(hào)課程的學(xué)生姓名。用嵌套查詢SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSC/*相關(guān)子查詢*/WHERESno=Student.SnoANDCno='1');求解過(guò)程
當(dāng)前第106頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))思路分析:本查詢涉及Student和SC關(guān)系。在Student中依次取每個(gè)元組的Sno值,用此值去檢查SC關(guān)系。若SC中存在這樣的元組,其Sno值等于此Student.Sno值,并且其Cno='1',則取此Student.Sname送入結(jié)果關(guān)系。當(dāng)前第107頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))用連接運(yùn)算SELECTSnameFROMStudent,SCWHEREStudent.Sno=SC.SnoAND SC.Cno='1';當(dāng)前第108頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))[例42]查詢沒(méi)有選修1號(hào)課程的學(xué)生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');此例用連接運(yùn)算難于實(shí)現(xiàn)
當(dāng)前第109頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))3.不同形式的查詢間的替換一些帶EXISTS或NOTEXISTS謂詞的子查詢不能被其他形式的子查詢等價(jià)替換所有帶IN謂詞、比較運(yùn)算符、ANY和ALL謂詞
的子查詢都能用帶EXISTS謂詞的子查詢等價(jià)替換。
當(dāng)前第110頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))例:[例37]查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生??梢杂脦XISTS謂詞的子查詢替換:SELECTSno,Sname,SdeptFROMStudentS1WHEREEXISTSSELECT*FROMStudentS2WHERES2.Sdept=S1.SdeptANDS2.Sname='劉晨';當(dāng)前第111頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))5.用EXISTS/NOTEXISTS實(shí)現(xiàn)全稱量詞(難點(diǎn))SQL語(yǔ)言中沒(méi)有全稱量詞(Forall)可以把帶有全稱量詞的謂詞轉(zhuǎn)換為等價(jià)的帶有存在量詞的謂詞:(x)P≡(x(P))
當(dāng)前第112頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))[例43]查詢選修了全部課程的學(xué)生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno);當(dāng)前第113頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))6.用EXISTS/NOTEXISTS實(shí)現(xiàn)邏輯蘊(yùn)函(難點(diǎn))SQL語(yǔ)言中沒(méi)有蘊(yùn)函(Implication)邏輯運(yùn)算可以利用謂詞演算將邏輯蘊(yùn)函謂詞等價(jià)轉(zhuǎn)換為:pq≡p∨q
當(dāng)前第114頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))[例44]查詢至少選修了學(xué)生95002選修的全部課程的學(xué)生號(hào)碼。解題思路:用邏輯蘊(yùn)函表達(dá):查詢學(xué)號(hào)為x的學(xué)生,對(duì)所有的課程y,只要95002學(xué)生選修了課程y,則x也選修了y。形式化表示: 用P表示謂詞“學(xué)生95002選修了課程y” 用q表示謂詞“學(xué)生x選修了課程y” 則上述查詢?yōu)?(y)pq
當(dāng)前第115頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))等價(jià)變換: (y)pq≡(y((pq))≡(y((p∨q)≡
y(p∧q)變換后語(yǔ)義:不存在這樣的課程y,學(xué)生95002選修了y,而學(xué)生x沒(méi)有選。當(dāng)前第116頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)帶有EXISTS謂詞的子查詢(續(xù))
用NOTEXISTS謂詞表示:
SELECTDISTINCTSnoFROMSCSCXWHERENOTEXISTS(SELECT*FROMSCSCYWHERESCY.Sno='95002'ANDNOTEXISTS(SELECT*FROMSCSCZWHERESCZ.Sno=SCX.SnoANDSCZ.Cno=SCY.Cno));當(dāng)前第117頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.3查詢
3.3.1概述3.3.2單表查詢3.3.3連接查詢3.3.4嵌套查詢3.3.5集合查詢3.3.6小結(jié)
當(dāng)前第118頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)3.3.5集合查詢集合操作的種類并操作UNION交操作INTERSECT差操作EXCEPT參加集合操作的各查詢結(jié)果的列數(shù)必須相同;對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類型也必須相同
當(dāng)前第119頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)1.并操作形式 <查詢塊> UNION <查詢塊>參加UNION操作的各結(jié)果表的列數(shù)必須相同;對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類型也必須相同當(dāng)前第120頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)并操作(續(xù))[例45]查詢計(jì)算機(jī)科學(xué)系的學(xué)生及年齡不大于19歲的學(xué)生。方法一:SELECT*FROMStudentWHERESdept='CS'
UNIONSELECT*FROMStudentWHERESage<=19;當(dāng)前第121頁(yè)\共有135頁(yè)\編于星期五\0點(diǎn)并操作(續(xù))方法二:
SELECTDISTINCT*FROMStudentWHERESdept='CS'O
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 提高銷售管理能力的培訓(xùn)課程
- 2025天津市農(nóng)資買賣合同范文
- 家居裝飾設(shè)計(jì)與施工方案
- 勞動(dòng)合同知識(shí)產(chǎn)權(quán)保密條款
- 房屋中介買賣服務(wù)合同范本
- 2025《代理企業(yè)所得稅年度納稅申報(bào)合同》(合同模版)
- 的買賣合同范本
- 社工勞動(dòng)合同
- 2025工程外包合同模板
- 農(nóng)業(yè)機(jī)械設(shè)備采購(gòu)安裝合同
- JTGT H21-2011 公路橋梁技術(shù)狀況評(píng)定標(biāo)準(zhǔn)
- 賣花生混聲合唱簡(jiǎn)譜
- 【永輝超市公司員工招聘問(wèn)題及優(yōu)化(12000字論文)】
- 柴油加氫裝置知識(shí)培訓(xùn)課件
- 汽油安全技術(shù)說(shuō)明書(MSDS)
- 中國(guó)直銷發(fā)展四個(gè)階段解析
- 2024屆浙江省寧波市鎮(zhèn)海區(qū)鎮(zhèn)海中學(xué)高一物理第一學(xué)期期末質(zhì)量檢測(cè)試題含解析
- 部編版語(yǔ)文四年級(jí)下冊(cè) 教材解讀
- 《一次函數(shù)與方程、不等式》說(shuō)課稿
- 動(dòng)火作業(yè)安全管理要求及控制措施
- 詩(shī)豪劉禹錫一生部編教材PPT
評(píng)論
0/150
提交評(píng)論