




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、sql中兩行合并_第五關(guān):從零學(xué)會(huì)SQL之多表查詢(xún)、表的加法:union語(yǔ)句1、union語(yǔ)句使用union語(yǔ)句進(jìn)行course表跟coursei相加,兩個(gè)查詢(xún)語(yǔ)句聯(lián)結(jié)在一起,文氏圖:左邊course右邊coursei兩個(gè)表相加重復(fù)的數(shù)據(jù)只會(huì)留一個(gè):例如語(yǔ)文課程0001文氏圖:加法(union)數(shù)學(xué)(0002)工宀計(jì)算機(jī)(0004)I/語(yǔ)文'(0001)英語(yǔ)(0003)數(shù)據(jù)庫(kù)(000占unionSQL語(yǔ)句的使用-unic語(yǔ)句的使用/Select課程號(hào),課程名稱(chēng)nirtnoFromcourseUnionSelect課程號(hào),課程名稱(chēng)Fromcoursel1112 3union表的加法13
2、L-union句的悝用14 Sslect課程號(hào)課程電稱(chēng)_5Frcmcourss16 Uriion17 Select課程號(hào)課程電稱(chēng)二Frcmcourssl19信息茫果1刪112、unionall語(yǔ)句unionall將所有的列進(jìn)行相聯(lián)結(jié),0001語(yǔ)文00C2數(shù)字00C3英常0004計(jì)訓(xùn)不會(huì)刪除重復(fù)的查詢(xún)列一:三圭1111-unionallSQL語(yǔ)句的使用Select課程號(hào),課程名稱(chēng)FromcourseUnionallSelect課程號(hào),課程名稱(chēng)Fromcoursel3 unicnallS風(fēng)語(yǔ)冗的使用4 Select課程號(hào)保程名稱(chēng)5 Fromccurse6 Unionall7 Select課程號(hào)程名
3、稱(chēng)8 Fromcense1二、表的聯(lián)結(jié)什么是聯(lián)結(jié)?魁號(hào)0001語(yǔ)文0002數(shù)學(xué)0003英語(yǔ)000300i34ttmtfc聯(lián)結(jié):表和表是通過(guò)列產(chǎn)生對(duì)應(yīng)關(guān)系的,聯(lián)結(jié)是將通過(guò)表和表之間的關(guān)系,將兩個(gè)表合并在一起的操作。1、各表之間的關(guān)系各個(gè)表通過(guò)一些相同的列進(jìn)行聯(lián)結(jié)的例如下圖每個(gè)學(xué)號(hào)列相同的學(xué)號(hào)行進(jìn)行聯(lián)結(jié)學(xué)生表成績(jī)表聯(lián)結(jié)(jo訶3005:9虹-1I-2L3004王W1990-C5-20血1赧子1990-12-2L左學(xué)號(hào)潴出生E軽性別300;齡LWl-OL男3151刀0-00oO0123oDDooO0oO3C9C990QQ2_J6C0003|800W300013C00530002Null00J3C0Q
4、34張表的聯(lián)結(jié)關(guān)系圖學(xué)生表跟成績(jī)表通過(guò)學(xué)號(hào)聯(lián)結(jié)成績(jī)表跟課程表通過(guò)課程號(hào)進(jìn)行聯(lián)結(jié)課程表跟教師表通過(guò)教師號(hào)進(jìn)行聯(lián)結(jié)4張表聯(lián)結(jié)關(guān)系圖學(xué)生表1)交叉聯(lián)結(jié):crossjoin學(xué)生姓名出生年月教師號(hào)教師姓名2、常用的聯(lián)結(jié)聯(lián)1990U女L9911221Rpee加ME畀0001也叫笛卡爾積英文名稱(chēng)crossjoin案例:表一三行數(shù)據(jù)跟表二兩行數(shù)據(jù)進(jìn)行交叉聯(lián)結(jié)表一crossjoin表二的數(shù)據(jù)表為3行*2行=6行數(shù)據(jù)類(lèi)似撲克牌13張牌=(A.2.3.4.5.6.7.8.9.10.J.Q.K)花色=(.“)13張牌X花色=13*4=(52張撲克牌)平常用的比較少2)內(nèi)聯(lián)結(jié):innerjoin查找出同時(shí)存在于兩張表中
5、的數(shù)據(jù):英文名innerjoin案例(score;學(xué)生表(student)跟成績(jī)表(score)通過(guò)學(xué)號(hào)產(chǎn)生了匹配,在表中使用相同的顏色表示都有的學(xué)號(hào)。兩個(gè)表里都有的學(xué)號(hào)是0001,學(xué)號(hào)o002只存在于學(xué)生表里,學(xué)號(hào)0005只存在于成績(jī)表中,圖片中用文氏圖畫(huà)出了內(nèi)聯(lián)結(jié)之間的關(guān)系,左邊的圓圈顯示學(xué)生表里的數(shù)據(jù),右邊的圓圈顯示成績(jī)表里的數(shù)據(jù),兩個(gè)圓圈重合的地方就是同時(shí)存在于兩個(gè)表里的數(shù)據(jù),也就是學(xué)號(hào)0001。(student)拿學(xué)生表跟成績(jī)表進(jìn)行內(nèi)聯(lián)結(jié)第一步:±1鯛醐3001轅子1969-01-01劉3002子199C-12-21女內(nèi)聯(lián)結(jié)innerjoin學(xué)號(hào)課程號(hào)卿300100018C
6、-300100029C-30056C-兩個(gè)表通過(guò)學(xué)生的學(xué)號(hào)進(jìn)行內(nèi)聯(lián)纟可以看出內(nèi)聯(lián)結(jié)在兩張表上是如何運(yùn)行的兩個(gè)表通過(guò)學(xué)號(hào)進(jìn)行內(nèi)聯(lián)結(jié),會(huì)將兩個(gè)表中都有的學(xué)號(hào)所在的行取出來(lái),學(xué)生表里會(huì)把學(xué)號(hào)0001行的數(shù)據(jù)取出來(lái),成績(jī)表里學(xué)號(hào)0001里有兩行,取出的是兩行數(shù)據(jù)。將兩個(gè)表里取出來(lái)的數(shù)據(jù)進(jìn)行合并,這里就是進(jìn)行交叉聯(lián)結(jié)了,交叉聯(lián)結(jié)是將表中的每一行跟另一個(gè)表中的每一行兩兩合在一起,這里將學(xué)生表中的學(xué)號(hào)0001行數(shù)據(jù)跟成績(jī)表中的兩行數(shù)據(jù)合并,最終產(chǎn)生了兩行數(shù)據(jù),合并以后的表呢就有了兩張表中的全部信息。學(xué)號(hào),姓名,出生日期,性別,課程號(hào),成績(jī)都放在了一張表中。學(xué)生表(student)成績(jī)表(score)'
7、;Iftw出生日期0001猴子1989-01-01男0002報(bào)子1990-12-21女內(nèi)聯(lián)結(jié)innerjoin學(xué)號(hào)孵號(hào)J00010001;00010002!00050003取出符合條件的行|SQL查詢(xún)語(yǔ)句0001出生日期性別猴子1989-01-01男學(xué)號(hào)pi%;”00010001800001000290交叉聯(lián)結(jié)-內(nèi)聯(lián)結(jié)SQL查詢(xún)語(yǔ)句Selecta.學(xué)號(hào),a.姓名,b.課程號(hào)Fromstudentasainnerjoinscoreasb-重點(diǎn)1:scoreasOna學(xué)號(hào)=b.學(xué)號(hào)-重點(diǎn)on在學(xué)號(hào)的基礎(chǔ)上進(jìn)行聯(lián)結(jié)學(xué)號(hào)姓名出生日期性別00010001猴子1989-01-01男猴子1989-OfOl男
8、00010001000180000290153 內(nèi)廄結(jié)innezjoinSQL查詢(xún):吾句154 3e;ect沐學(xué)號(hào)疋.姓名課程號(hào)155 Fromstudentasainnerjoinscoreasb155加兒學(xué)號(hào)土氏學(xué)號(hào)嚴(yán)亠重點(diǎn)Non生學(xué)號(hào)腑基礎(chǔ)上進(jìn)行聯(lián)結(jié)157153信息箔杲1狀態(tài)學(xué)號(hào)駆號(hào)COD1抿子0201匚g曝子0002CO01振子0003C0C2蹊子Q3O2C002提子OCXB注意事項(xiàng):From中使用.了兩張表.,.'/:)C0D3馬云ODO?1、表的別名,列名是為了區(qū)分是哪張表中的數(shù)據(jù),需要在列名前加上表的別名跟點(diǎn)2、兩個(gè)表中間innerjoin就說(shuō)明兩張表通過(guò)innerjoi
9、n進(jìn)行內(nèi)聯(lián)結(jié)3、From子句中的關(guān)鍵字on表示兩張表是通過(guò)哪個(gè)列匹配產(chǎn)生關(guān)系的3)左聯(lián)結(jié):leftjoin會(huì)將左側(cè)表中的數(shù)據(jù)取出來(lái),文氏圖中左聯(lián)結(jié)就是學(xué)生表中的部分如何進(jìn)行運(yùn)行的第一步左聯(lián)結(jié)就是左側(cè)的表作為主表,主表中的數(shù)據(jù)全部讀取出來(lái),也就是將學(xué)生表中的數(shù)據(jù)全部取出來(lái),右邊的表中只選出和左邊表中相同學(xué)號(hào)的行也就是學(xué)號(hào)0001所在的兩行數(shù)據(jù)將兩個(gè)表中取出的數(shù)據(jù)進(jìn)行合并,如何合并:這里就要進(jìn)行交叉聯(lián)結(jié)了,因?yàn)閷W(xué)號(hào)0002在右邊的表里沒(méi)有對(duì)應(yīng)的行,所以這一行對(duì)應(yīng)的列的值就是空值對(duì)應(yīng)的SQL語(yǔ)句-左聯(lián)結(jié)leftjoinSQL語(yǔ)句Selecta.學(xué)號(hào),a.姓名,b.課程號(hào)Fromstudentasal
10、eftjoinscoreasbOna.學(xué)號(hào)=b.學(xué)號(hào)氣”,葉Er?-工吉prrinSi,1'口477-Iki»4丄J1L7比"ILJ159 q*學(xué)號(hào)q»姓名.b課程號(hào)|160 Froir;studentasaleftjoinscoreasb16LOna學(xué)號(hào)=b學(xué)號(hào)162163信息結(jié)果1ffiKR狀態(tài)學(xué)導(dǎo)課程號(hào)_0001猴子00030002猴子00020002濮子00030003馬云0001我們?cè)賮?lái)看'個(gè)問(wèn)題00020003馬云00030004(Null)左聯(lián)結(jié)的基礎(chǔ)上,圖片中紅色部分的地方如何用SQL表示呢(score)姓名出生日嚥麗猴子1988-
11、01-010002猴子199012-21女學(xué)5表(st-jdent)聯(lián)結(jié)學(xué)號(hào)i襁號(hào)峨00310001B00031m2卯Q0D5OOQ360成績(jī)表030100Q5表中的公共部分D0024)右聯(lián)結(jié):rightjoin這是在左聯(lián)結(jié)中去掉了兩個(gè)表中共同的地方,SQL語(yǔ)句-左聯(lián)結(jié)中去掉公共部分Selecta.學(xué)號(hào),a.姓名,b.課程號(hào)FromstudentasaleftjoinscoreasbOna.學(xué)號(hào)=b.學(xué)號(hào)Whereb.學(xué)號(hào)isnull;丄no159-左.聯(lián)結(jié)中去掉公共鄒分16CSelecta.學(xué)號(hào)”a.姓名b.課程號(hào)161 Fromstudentssaleftjoinscoreasb162 O
12、na.學(xué)號(hào)=b,學(xué)號(hào)163 hersb.學(xué)號(hào)isnu.ll;164 |165信息結(jié)杲1翻舷學(xué)號(hào)姓名鞘呂右聯(lián)結(jié)會(huì)將右側(cè)表中的數(shù)據(jù)全部取出來(lái),圖片中文氏圖畫(huà)出了右聯(lián)結(jié)是紅色圖的地方第一步:兩行表通過(guò)學(xué)號(hào)進(jìn)行右聯(lián)結(jié),就是將成績(jī)表里的數(shù)據(jù)全部取出來(lái)左邊表只選出和右邊表相同學(xué)號(hào)的行第二步:將兩張表中取出的數(shù)據(jù)合并:如何合并:就是進(jìn)行交叉聯(lián)結(jié)了,因?yàn)閷W(xué)號(hào)0005在左邊的表中沒(méi)有相應(yīng)的行,這一行對(duì)應(yīng)的列是空值。SQL語(yǔ)句-右聯(lián)結(jié)rightjoinSQL語(yǔ)句Selecta.學(xué)號(hào),a.姓名,b.課程號(hào)FromstudentasarightjoinscoreasbOna.學(xué)號(hào)=b.學(xué)號(hào)11517E17ns112-
13、右聯(lián)結(jié)rightjoir.SQL語(yǔ)句Select乳學(xué)號(hào)a.姓名J,保程號(hào)FromstudetitasarightjoinscoreasbOna,學(xué)號(hào)二b.學(xué)號(hào)在右聯(lián)結(jié)的基礎(chǔ)上,我們?cè)賮?lái)看一個(gè)問(wèn)題,圖比中紅色部分應(yīng)該如何用SQL表示呢這是在右聯(lián)結(jié)的基礎(chǔ)上去掉了兩個(gè)表中共同的地奈去掉了兩張表中共同的地方SQL語(yǔ)句0031狠子0D010001抿子00020031猴子0D030032猴子M02OOJ2猴子OD03-leftjoin右聯(lián)結(jié)去掉相同列的SQL語(yǔ)句Selecta.學(xué)號(hào),a.姓名,b.課程號(hào)FromstudentasarightjoinscoreasbOna.學(xué)號(hào)=b.學(xué)號(hào)Wherea.學(xué)號(hào)i
14、snull;5)全聯(lián)結(jié):fulljoin全聯(lián)結(jié)的查詢(xún)結(jié)果會(huì)返回左表和右表中的所有行,當(dāng)某行和另一個(gè)表中有匹配的時(shí)候兩個(gè)行進(jìn)行合并,如果某行和另一個(gè)表中沒(méi)有匹配的行的時(shí)候,另一個(gè)表中沒(méi)有的值用空值填充,在圖片中看出了有兩行空值,分別是左聯(lián)結(jié)結(jié)果和右聯(lián)結(jié)結(jié)果中的空值行,這樣就會(huì)看到兩個(gè)表中的數(shù)據(jù)都在聯(lián)結(jié)結(jié)果中了,值得一提的是MySQL是不支持全聯(lián)結(jié)的。6)SQL聯(lián)結(jié)from表1asarightjoin妻2asbona名旳列名fromSIasainnerjoin表2asbon曰洌名=h列名;from表1asal&hjcin表2asbon日列列名;from表1asarig"1join
15、表2asbon白副名二b+列名,from表1asakftjoin表2asbon乩列名二b.列名whereb.列名isnt;什么時(shí)候用哪種聯(lián)結(jié)呢佗&列名isnuI;當(dāng)實(shí)際工作業(yè)務(wù)中想要生成固定行數(shù)的表單,或者特別說(shuō)明了要哪一張表里的全部數(shù)據(jù)的時(shí)候,會(huì)使用左聯(lián)結(jié)或右聯(lián)結(jié),其他情況都是用內(nèi)聯(lián)結(jié)獲取兩個(gè)表的公共部分。3、SQL運(yùn)行順序三、聯(lián)結(jié)應(yīng)用案例如何用SQL解決業(yè)務(wù)問(wèn)題select萱詢(xún)結(jié)果from從哪張表中酣數(shù)據(jù)聯(lián)結(jié))where査詢(xún)條件(§算飪模麹登詢(xún):groupby仝組海4)tw帕對(duì)分組結(jié)杲蹙條件0旳加對(duì)查詢(xún)結(jié)東毎序sql運(yùn)行廂序:1冼運(yùn)f抒餉Z每個(gè)查詢(xún)語(yǔ)句里運(yùn)柯瞬L)先運(yùn)行藍(lán)
16、框里的子句2)select?句3)最后運(yùn)巧紅框里的子句主要分為三個(gè)步驟1、翻譯成大白話(huà)2、寫(xiě)出分析思路3、寫(xiě)出對(duì)應(yīng)的SQL子句案例問(wèn)題1:查詢(xún)所有學(xué)生的學(xué)號(hào)、姓名、選課數(shù)、總成績(jī)1、翻譯成大白話(huà)1)學(xué)號(hào)、姓名(學(xué)生表student)2)選課數(shù)(每個(gè)學(xué)生的選課數(shù)目):成績(jī)表score按學(xué)號(hào)分組,對(duì)課程號(hào)計(jì)數(shù)count3)總成績(jī)(每個(gè)學(xué)生的總成績(jī):成績(jī)表score,4)按學(xué)號(hào)分組,對(duì)成績(jī)求和sum2、寫(xiě)出分析思路查詢(xún)所有學(xué)生的學(xué)號(hào)、姓名、每個(gè)學(xué)生的選課數(shù)目、每個(gè)學(xué)生的總成績(jī)Select查詢(xún)結(jié)果【學(xué)號(hào),姓名,選課數(shù),總成績(jī)】From從哪張表中查找數(shù)據(jù)【學(xué)生表student,成績(jī)表score兩個(gè)表如何
17、聯(lián)結(jié)?通過(guò)學(xué)號(hào)哪種聯(lián)結(jié)?左聯(lián)結(jié)】Where查詢(xún)結(jié)果【沒(méi)有】Groupby分組【每個(gè)學(xué)生的選課數(shù)目:按學(xué)號(hào)分組,對(duì)課程號(hào)計(jì)數(shù)count)每個(gè)學(xué)生的總成績(jī):按學(xué)號(hào)分組,對(duì)成績(jī)求和sum)】Having對(duì)分組結(jié)果指定條件【沒(méi)有】Orderby對(duì)查詢(xún)結(jié)果排序【沒(méi)有】Limit從查詢(xún)結(jié)果中取出指定行【沒(méi)有】3、寫(xiě)出對(duì)應(yīng)的SQL語(yǔ)句-查詢(xún)所有學(xué)生的學(xué)號(hào)、姓名、選課數(shù)、總成績(jī)-查詢(xún)所有學(xué)生的學(xué)號(hào)、姓名、選課數(shù)、總成績(jī)Select學(xué)號(hào),姓名,count(課程號(hào))as選課數(shù),sum(成績(jī))as總成績(jī)FromstudentasaleftjoinscoreasbOna.學(xué)號(hào)=b.學(xué)號(hào)Groupbya.學(xué)號(hào)2、寫(xiě)出分
18、析思路Select查詢(xún)結(jié)果【學(xué)號(hào),姓名,平均成績(jī)】From從哪張表中查找數(shù)據(jù)【學(xué)生表student,成績(jī)表score兩個(gè)表如何關(guān)聯(lián)?通過(guò)學(xué)號(hào)用哪種聯(lián)結(jié)?左聯(lián)結(jié)】Where查詢(xún)條件【沒(méi)有】Groupby分組【每個(gè)學(xué)生的選課項(xiàng)目:按學(xué)號(hào)分組,對(duì)課程號(hào)計(jì)數(shù)count每個(gè)學(xué)生的總成績(jī):按學(xué)號(hào)分組,對(duì)成績(jī)求和sum】Having對(duì)分組結(jié)果指定條件【沒(méi)有】Orderby對(duì)查詢(xún)結(jié)果排序【沒(méi)有】Limit從查詢(xún)結(jié)果中取出指定行【沒(méi)有】;3、寫(xiě)出對(duì)應(yīng)的SQL子句-查詢(xún)所有學(xué)生的學(xué)號(hào)、姓名、平均成績(jī)Selecta.學(xué)號(hào),a.姓名,avg(b.成績(jī))as平均成績(jī)Fromstudentasaleftjoinscore
19、asbOna.學(xué)號(hào)=b.學(xué)號(hào)P701020304050607Groupbya.學(xué)號(hào);查詢(xún)所有學(xué)生旳學(xué)號(hào)、妊名、平覽或績(jī)Selecta.學(xué)號(hào)f3.姓名favg(b.成績(jī))己s平均成績(jī)Fromszudsntaaaleftjoinscoreas二Dn乳學(xué)號(hào)龍,學(xué)號(hào)Sroupby己.學(xué)號(hào);信息結(jié)杲1諏學(xué)號(hào)好平均瞬001抿子89.66670C02舉子70.0030查詢(xún)平均成績(jī)大于85的所有學(xué)生的學(xué)號(hào)、壟名和平均成績(jī)°iNulli卜0204王巨聰-查詢(xún)平均成績(jī)大于85的所有學(xué)生的學(xué)號(hào)、姓名和平均成績(jī)Selecta.學(xué)號(hào),a.姓名,avg(b.成績(jī))as平均成績(jī)Fromstudentasaleft
20、joinscoreasbOna.學(xué)號(hào)=b.學(xué)號(hào)Groupbya.學(xué)號(hào)Havingavg(b.成績(jī))>85;£ti加9-查詢(xún)平均成績(jī).瓦于瞪茹祈有學(xué)生的學(xué)號(hào)、姓名彌平墳成績(jī)21CSslecta,學(xué)號(hào)”己.姓名/avg(b.成績(jī))as平均成績(jī)211 FrcmStuderasalEftjoinscoreasb212 Or.a.學(xué)號(hào)=1.學(xué)號(hào)213 Groupjzya.學(xué)號(hào)214 Having-avg(b.>35;2152162171)學(xué)號(hào),姓名(學(xué)生表student)2)課程號(hào),課程名稱(chēng)(課程表course)SQL語(yǔ)句查詢(xún)學(xué)生的選課情況Selecta.學(xué)號(hào),a.姓名,c.課程號(hào)
21、,c.課程名稱(chēng)Fromstudentainnerjoinscorebona.學(xué)號(hào)=b.學(xué)號(hào)Innerjoincourseconb.課程號(hào)=c.課程號(hào);217218212220B上'ffl古irrI"jMi'*IS,5-lect乳學(xué)號(hào)用.姓名課程號(hào)課程名稱(chēng)rrornstudentainnerjcir.scorebon日.學(xué)號(hào)二b,學(xué)號(hào)Innerjoincourseconb課程號(hào)課穆號(hào);0002振子0002數(shù)學(xué)0002四、Cas表達(dá)式一猴子0003英語(yǔ)馬云0001語(yǔ)文什么是Case表達(dá)式?二二0002數(shù)孚結(jié)果1WJ?學(xué)號(hào)姓名渥程名稱(chēng)0001猴子0001語(yǔ)文00010002
22、數(shù)學(xué)T1Case表達(dá)式可以幫助我們解決復(fù)雜的查詢(xún)問(wèn)題,case表達(dá)的作用就相當(dāng)于進(jìn)行一個(gè)條件判斷的函數(shù)用來(lái)判斷每一行是不是滿(mǎn),條件,圖片中給出了case表達(dá)式的語(yǔ)句,里面的wen子句的判斷表達(dá)式,來(lái)判斷某行數(shù)據(jù),是否符合某個(gè)條件,如果符合條件后面的then子句,case表達(dá)式運(yùn)行到此結(jié)束,就不會(huì)運(yùn)行后面的when子句了,如果不符合條件就進(jìn)入下一個(gè)when子句,如果后面的when子句都沒(méi)有找到合適的數(shù)據(jù),那么就會(huì)運(yùn)行else中的表達(dá)式Casewhen判斷表達(dá)式the門(mén)表達(dá)式when判斷表達(dá)式the門(mén)表達(dá)式when判斷表達(dá)式the門(mén)表達(dá)式Else表達(dá)式End案例:判斷學(xué)生成績(jī)是否及格判斷學(xué)生成績(jī)是
23、否及格Select學(xué)號(hào),課程號(hào),成績(jī),(casewhen成績(jī)>=60then及格'When成績(jī)<60then不及格Elsenullend)as是否及格fromscore;303304 判斷學(xué)生成績(jī)是否及格305 Select學(xué)號(hào)#課程號(hào)*成績(jī)306 (casewhen成績(jī)then'及格丫307 When成績(jī)V60then不及格303Elsenull32end)s是否及格31Lfromscore;)311312313信息結(jié)果1概況狀態(tài)0001000399及格0002000260及格00020003案例:查詢(xún)出每門(mén)課程的及格人數(shù)和不及格人數(shù)1)查詢(xún)出每門(mén)課程的人數(shù)i匸8
24、0及格000180及格0003-查詢(xún)出每門(mén)課程的人數(shù)Select課程號(hào),Count(學(xué)號(hào))as.人數(shù)Fromscore""Groupby課程號(hào);0002000380及格80及格學(xué)號(hào)課程號(hào)成績(jī)是否及格0001000180及搭90及格000100022)查詢(xún)出每門(mén)課程的及格人數(shù)和不及格人數(shù)-查詢(xún)出每門(mén)課程的及格人數(shù)和不及格人數(shù)Select課程號(hào),Sum(casewhen成績(jī)=60then1else0end)as及格人數(shù),sum(casewhen成績(jī)60then1else0end)as不及格人數(shù)fromscoregroupby課程號(hào);erniit-?m比L_:占r/r詁琵鞅JIJ
25、4-LJ1J+LTfZ%LJk1icy去hJ.,.-J-'?未t丄dbyJJ弋¥JT壬口HiX.'PzX.X.TM314 Select課程號(hào),315 s(:asewhen成績(jī)K0then1316 else031"end)as及賂人數(shù)#318 sun(casewhen成績(jī)心匸hen1319 else0320 end)as不及格人數(shù)321 frorr.score322 groupby課程號(hào);323324課程號(hào)case表達(dá)式注意事I項(xiàng)|能及胳人數(shù)結(jié)果1狀態(tài)CaseU1when判斷表達(dá)式then表達(dá)式:when判斷表達(dá)式the門(mén)表達(dá)式when判斷表達(dá)式the門(mén)表達(dá)式
26、Else表達(dá)式else可以省略,默認(rèn)為空值End.end不能省略不寫(xiě)的Case表達(dá)式能寫(xiě)在SQL語(yǔ)句中任意語(yǔ)句中case表達(dá)式有什么用,什么時(shí)候比較好用呢當(dāng)有多種條件判斷的時(shí)候使用case表達(dá)式了案例:使用分段100-85,85-70,70-6060來(lái)統(tǒng)計(jì)各科成績(jī),分別統(tǒng)計(jì):各分?jǐn)?shù)段人數(shù)(成績(jī)表score),課程號(hào)和課程名稱(chēng)(課程表course)/*使用分段100-85,85-70,70-60<60來(lái)統(tǒng)計(jì)各科成績(jī),分別統(tǒng)計(jì):各分?jǐn)?shù)段人數(shù)(成績(jī)表score),課程號(hào)和課程名稱(chēng)(課程表course)*/Select&課程號(hào),b.課程名稱(chēng),Sum(casewhen成績(jī)between85
27、and100Then1else0end)as'100-85',Sum(casewhen成績(jī)>=70and成績(jī)<85Then1else0end)as'85-70',Sum(casewhen成績(jī)>=60and成績(jī)<70Then1else0end)as'70-60',Sum(casewhen成績(jī)<60Then1else0end)as'<60'FromscoreasarightjoincourseasbOna.課程號(hào)=b.課程號(hào)326E.'2I32832933033133233333433533
28、6337338339340341Groupbya.課程號(hào),b.課程名稱(chēng)成績(jī)between85ani10Jend)as1100-85成績(jī)>=_ana成績(jī)也三end)as'35-70成and成績(jī)VendJas'口卜&仍成績(jī)丈切燈51elsa0end)as'<601曰righjoincourseasbSelecta.課程號(hào).課程名琢,Th&n1elseCSui(cise>.:herrh?n1elseCSmufccsehenThsn1ele0Sim(c:£5e:her.FromscoreasOna.誤程號(hào)動(dòng).課程號(hào)Grouphy日”課
29、程號(hào)川”課程宅稱(chēng);當(dāng)用多個(gè)列來(lái)分組時(shí)這凡個(gè)列的值全部相同才算一組-:'-_+口H*0001語(yǔ)丈D20五、練習(xí)題SQLZODDjOin/*1、第一個(gè)例子列出球員姓氏為'Bender'的入球數(shù)據(jù)。*表示列出表格的全部欄位,簡(jiǎn)化了寫(xiě)matchid,teamid,player,gtime語(yǔ)句。修改此SQL以列出賽事編號(hào)matchid和球員名player,該球員代表德國(guó)隊(duì)Germany入球的。要找出德國(guó)隊(duì)球員,要檢查:teamid='GER'*/SELECTmatchid,playerFROMgoalWHEREteamid='GER'matchid
30、p怡疽SCCEMmrinGdmeiieicMdriaCjorr&z1C1Cari&Gorrez1C12跡Pocolski1C12_aisBinder1CM-3ilippLahm1C2f1圣翌總朋;.CornetEinsw&rtgnid,下仙”,包緻血Q刪出亞輛北吵處刊豳名盟村鬲鵝畑酯廡11伽認(rèn)剛*墜跚陽(yáng)卑關(guān),慕顯:2d=如巫邀T帕toitLish聞吧皿】raniMwii='or/*2、由以上查詢(xún),你可見(jiàn)LarsBender's於賽事1012入球。現(xiàn)在我們想知道此賽事的對(duì)賽隊(duì)伍是哪一隊(duì)。留意在goal表格中的欄位matchid,是對(duì)應(yīng)表格game的欄位id
31、。我們可以在表格game中找出賽事1012的資料。只顯示賽事1012的id,stadium,team1,team2*/SELECTid,stadium,team1,team2FROMgamewhereid=1012Mfladkri耐n2AjffUIiIm芳用JinsniT2.師Elb.“Nd朗耿尿一劃tnmhfl肛曲刪滬睡*敘MLDI泗瓦用畸豪*1,孝eI.rtdm,imin±3LET弼jL佯ekL"2cup1*1142/*3、我們可以利用JOIN來(lái)同時(shí)進(jìn)行以上兩個(gè)步驟。SELECT*FROMgameJOINgoalON(id=matchid)語(yǔ)句FROM表示合拼兩個(gè)表格g
32、ame和goal的數(shù)據(jù)。語(yǔ)句ON表示如何找出game中每一列應(yīng)該配對(duì)goal中的哪一列-goal的id必須配對(duì)game的matchid。簡(jiǎn)單來(lái)ON(game.id=goal.matchid)以下SQL列出每個(gè)入球的球員(來(lái)自goal表格)和場(chǎng)館名(來(lái)自game表格)修改它來(lái)顯示每一個(gè)德國(guó)入球的球員名,隊(duì)伍名,場(chǎng)館和日期。*/SELECTy.player,y.teamid,x.stadium,x.mdateFROMgameasxinnerJOINgoalasyON(x.id=y.matchid)whereteamid='GER'ffcjeXi保M4ik>右旣ctn戶(hù)Hfid
33、Lw、此ne摘上麗町祜心沁;!Siadin13.U1&23I2tenSWkii;TW1.劃Podddd/fundtw17La丹BandsFHHLWV17.ire23t21:何誦Lain豎AGEX1缶佃臥伽iKi>dwaWjEArw心佝臥應(yīng)aune23li2必rt此:.n乳呻'3®曲口Rd*:陽(yáng)即R0曾硏書(shū)制何刃希m如中0約K3IHHOCtt蘇餌劃1gm阿舟一亍旦當(dāng)帥対中的一弘呻兇1的襯筈SG?紳mi的nW4W.艘珮.就是OKigtu.中號(hào)鍛1-:血£)SlET-yplfainr.k>UdwLii3:4TEXEmhkimffJOEFp-Altiya
34、kM-JiSd)/*4、使用上題相同的JOIN語(yǔ)句,列出球員名字叫Mario(playerLIKE'Mario%')有入球的隊(duì)伍1team1,隊(duì)伍2team2和球員名player*/selectx.team1,x.team2,y.playerFROMgameasxinnerJOINgoalasyON(x.id=y.matchid)whereplayerlike'Mario%'/*別it淞i害泗血1(3IJljymIJKK甫Af逐刪I也耐,除縊閻厲上M駆&回彈rteamlteim2MarbMnsNBCMawGXinKKBCIRLMwKuhkIRL惦祜MdM
35、kubitMarfoMJinliukicITAIMIRLMaroEIdhfFBIThMrrhtwEil/Til'-Jl.ibB-iii'r5、表格eteam貯存了每一國(guó)家隊(duì)的資料,包括教練。你可以使用語(yǔ)句goalJOINeteamonteamid=id來(lái)合拼JOIN表格goal到表格eteam。列出每場(chǎng)球賽中首10分鐘gtime<=10有入球的球員player,隊(duì)伍teamid,教練coach,入球時(shí)間gtime*/SELECTx.player,x.teamid,y.coach,x.gtimeFROMgoalasxinnerjoineteamasyonx.teamid=y
36、.idWHEREgtime<=10/*求13電孫就砸廐用WEjar«哼ffSftFJ08K到弄軽緞土毎目自|e苛i耐gX”pT".館i匸祖氣帕am,川如祇對(duì)tcsfndmehgrtinwf#rJidcccCZE5匕如hi.¥E制曲融5CM1:fmaKkTarw¥i:enlBde<BjleCoi'rectajisvr6、要合拼JOIN表格game和表格eteam,你可以使用gameJOINeteamON(team1=eteam.id)或gameJOINeteamON(team2=eteam.id)注意欄位id同時(shí)是表格game和表格et
37、eam的欄位,你要清楚指出eteam.id而不是只用id列出'FernandoSantos'作為隊(duì)伍1teaml的教練的賽事日期,和隊(duì)伍名。*/selectx.mdate,y.teamnamefromgameasxinnerjoineteamasyonx.team1=y.idwherecoach='FernandoSantos'/*7、*/selectb.playerfromgameasainnerjoingoalasbona.id=b.matchidwherestadium='NationalStadium,Warsaw'修改它,只列出全部賽事
38、,射入德國(guó)龍門(mén)的球員名字。*/SELECTdistinct(b.player)FROMgameasainnerJOINgoalasbONb.matchid=&idWHERE(a.team1='GERora.team2='GER')andb.teamido'GER'/*9、COUNTandGROUPBY*/SELECTa.teamname,count(b.player)FROMeteamasainnerJOINgoalasbONa.id=b.teamidgroupBY&teamnameselect&stadium,count(b.p
39、layer)fromgameasainnerjoingoalasbona.id=b.matchidgroupbya.stadium/*1O.HtUKfiW-TiUiHrK,時(shí)祁J>113石ic-arlpivr!tntInw魁r.血istm住kkhnicidfkFbrIUE-Jr!£lBSjbffilSQLConiecrtiLSweY嚇*詢(xún)¥77¥Qkr爐陽(yáng)頤晌1;rE疔1-'川謠詛1LSubnitMLCorrectansvrermatchidnt-dateCiDuntitupaye.-1師BJuneSJI:2I«t412Jum20122剛iJtiiwl21j'rrl:1711、每一場(chǎng)波蘭'POL'有參與的賽事中,列出賽事編號(hào)matchid,日期date和入球數(shù)字。*/SELECTb.matchidamdate,count(b.player)FRO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備現(xiàn)場(chǎng)維修管理制度
- 設(shè)備缺陷登記管理制度
- 設(shè)想幾種班級(jí)管理制度
- 設(shè)計(jì)服務(wù)收費(fèi)管理制度
- 設(shè)計(jì)部門(mén)人事管理制度
- 診所租賃設(shè)備管理制度
- 試驗(yàn)檢測(cè)合同管理制度
- 財(cái)務(wù)針對(duì)部門(mén)管理制度
- 財(cái)政專(zhuān)用資金管理制度
- 貨物專(zhuān)用運(yùn)輸管理制度
- 2022比亞迪員工手冊(cè)
- 元宇宙技術(shù)與應(yīng)用知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春中國(guó)科學(xué)技術(shù)大學(xué)
- 中國(guó)參與國(guó)際通信海纜建設(shè)和保護(hù)相關(guān)情況報(bào)告
- 2025年中國(guó)車(chē)載逆變電源市場(chǎng)調(diào)查研究報(bào)告001
- 專(zhuān)題02 陸地和海洋-2025年會(huì)考地理知識(shí)點(diǎn)梳理(背誦版)
- 廣東省2025年普通高中學(xué)業(yè)水平合格性考試地理模擬卷一(附答案解析)
- 2024年高級(jí)經(jīng)濟(jì)師《工商管理》考試真題
- 瓷磚購(gòu)銷(xiāo)合同瓷磚購(gòu)銷(xiāo)合同范文8篇
- 第九課《大海》課件 花城版音樂(lè)二年級(jí)下冊(cè)
- 醫(yī)院節(jié)能減排措施
- 施工現(xiàn)場(chǎng)急救流程
評(píng)論
0/150
提交評(píng)論