版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、sql中兩行合并_第五關(guān):從零學(xué)會(huì)SQL之多表查詢、表的加法:union語句1、union語句使用union語句進(jìn)行course表跟coursei相加,兩個(gè)查詢語句聯(lián)結(jié)在一起,文氏圖:左邊course右邊coursei兩個(gè)表相加重復(fù)的數(shù)據(jù)只會(huì)留一個(gè):例如語文課程0001文氏圖:加法(union)數(shù)學(xué)(0002)工宀計(jì)算機(jī)(0004)I/語文'(0001)英語(0003)數(shù)據(jù)庫(000占unionSQL語句的使用-unic語句的使用/Select課程號,課程名稱nirtnoFromcourseUnionSelect課程號,課程名稱Fromcoursel1112 3union表的加法13
2、L-union句的悝用14 Sslect課程號課程電稱_5Frcmcourss16 Uriion17 Select課程號課程電稱二Frcmcourssl19信息茫果1刪112、unionall語句unionall將所有的列進(jìn)行相聯(lián)結(jié),0001語文00C2數(shù)字00C3英常0004計(jì)訓(xùn)不會(huì)刪除重復(fù)的查詢列一:三圭1111-unionallSQL語句的使用Select課程號,課程名稱FromcourseUnionallSelect課程號,課程名稱Fromcoursel3 unicnallS風(fēng)語冗的使用4 Select課程號保程名稱5 Fromccurse6 Unionall7 Select課程號程名
3、稱8 Fromcense1二、表的聯(lián)結(jié)什么是聯(lián)結(jié)?魁號0001語文0002數(shù)學(xué)0003英語000300i34ttmtfc聯(lián)結(jié):表和表是通過列產(chǎn)生對應(yīng)關(guān)系的,聯(lián)結(jié)是將通過表和表之間的關(guān)系,將兩個(gè)表合并在一起的操作。1、各表之間的關(guān)系各個(gè)表通過一些相同的列進(jìn)行聯(lián)結(jié)的例如下圖每個(gè)學(xué)號列相同的學(xué)號行進(jìn)行聯(lián)結(jié)學(xué)生表成績表聯(lián)結(jié)(jo訶3005:9虹-1I-2L3004王W1990-C5-20血1赧子1990-12-2L左學(xué)號潴出生E軽性別300;齡LWl-OL男3151刀0-00oO0123oDDooO0oO3C9C990QQ2_J6C0003|800W300013C00530002Null00J3C0Q
4、34張表的聯(lián)結(jié)關(guān)系圖學(xué)生表跟成績表通過學(xué)號聯(lián)結(jié)成績表跟課程表通過課程號進(jìn)行聯(lián)結(jié)課程表跟教師表通過教師號進(jìn)行聯(lián)結(jié)4張表聯(lián)結(jié)關(guān)系圖學(xué)生表1)交叉聯(lián)結(jié):crossjoin學(xué)生姓名出生年月教師號教師姓名2、常用的聯(lián)結(jié)聯(lián)1990U女L9911221Rpee加ME畀0001也叫笛卡爾積英文名稱crossjoin案例:表一三行數(shù)據(jù)跟表二兩行數(shù)據(jù)進(jìn)行交叉聯(lián)結(jié)表一crossjoin表二的數(shù)據(jù)表為3行*2行=6行數(shù)據(jù)類似撲克牌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)跟成績表(score)通過學(xué)號產(chǎn)生了匹配,在表中使用相同的顏色表示都有的學(xué)號。兩個(gè)表里都有的學(xué)號是0001,學(xué)號o002只存在于學(xué)生表里,學(xué)號0005只存在于成績表中,圖片中用文氏圖畫出了內(nèi)聯(lián)結(jié)之間的關(guān)系,左邊的圓圈顯示學(xué)生表里的數(shù)據(jù),右邊的圓圈顯示成績表里的數(shù)據(jù),兩個(gè)圓圈重合的地方就是同時(shí)存在于兩個(gè)表里的數(shù)據(jù),也就是學(xué)號0001。(student)拿學(xué)生表跟成績表進(jìn)行內(nèi)聯(lián)結(jié)第一步:±1鯛醐3001轅子1969-01-01劉3002子199C-12-21女內(nèi)聯(lián)結(jié)innerjoin學(xué)號課程號卿300100018C
6、-300100029C-30056C-兩個(gè)表通過學(xué)生的學(xué)號進(jìn)行內(nèi)聯(lián)纟可以看出內(nèi)聯(lián)結(jié)在兩張表上是如何運(yùn)行的兩個(gè)表通過學(xué)號進(jìn)行內(nèi)聯(lián)結(jié),會(huì)將兩個(gè)表中都有的學(xué)號所在的行取出來,學(xué)生表里會(huì)把學(xué)號0001行的數(shù)據(jù)取出來,成績表里學(xué)號0001里有兩行,取出的是兩行數(shù)據(jù)。將兩個(gè)表里取出來的數(shù)據(jù)進(jìn)行合并,這里就是進(jìn)行交叉聯(lián)結(jié)了,交叉聯(lián)結(jié)是將表中的每一行跟另一個(gè)表中的每一行兩兩合在一起,這里將學(xué)生表中的學(xué)號0001行數(shù)據(jù)跟成績表中的兩行數(shù)據(jù)合并,最終產(chǎn)生了兩行數(shù)據(jù),合并以后的表呢就有了兩張表中的全部信息。學(xué)號,姓名,出生日期,性別,課程號,成績都放在了一張表中。學(xué)生表(student)成績表(score)'
7、;Iftw出生日期0001猴子1989-01-01男0002報(bào)子1990-12-21女內(nèi)聯(lián)結(jié)innerjoin學(xué)號孵號J00010001;00010002!00050003取出符合條件的行|SQL查詢語句0001出生日期性別猴子1989-01-01男學(xué)號pi%;”00010001800001000290交叉聯(lián)結(jié)-內(nèi)聯(lián)結(jié)SQL查詢語句Selecta.學(xué)號,a.姓名,b.課程號Fromstudentasainnerjoinscoreasb-重點(diǎn)1:scoreasOna學(xué)號=b.學(xué)號-重點(diǎn)on在學(xué)號的基礎(chǔ)上進(jìn)行聯(lián)結(jié)學(xué)號姓名出生日期性別00010001猴子1989-01-01男猴子1989-OfOl男
8、00010001000180000290153 內(nèi)廄結(jié)innezjoinSQL查詢:吾句154 3e;ect沐學(xué)號疋.姓名課程號155 Fromstudentasainnerjoinscoreasb155加兒學(xué)號土氏學(xué)號嚴(yán)亠重點(diǎn)Non生學(xué)號腑基礎(chǔ)上進(jìn)行聯(lián)結(jié)157153信息箔杲1狀態(tài)學(xué)號駆號COD1抿子0201匚g曝子0002CO01振子0003C0C2蹊子Q3O2C002提子OCXB注意事項(xiàng):From中使用.了兩張表.,.'/:)C0D3馬云ODO?1、表的別名,列名是為了區(qū)分是哪張表中的數(shù)據(jù),需要在列名前加上表的別名跟點(diǎn)2、兩個(gè)表中間innerjoin就說明兩張表通過innerjoi
9、n進(jìn)行內(nèi)聯(lián)結(jié)3、From子句中的關(guān)鍵字on表示兩張表是通過哪個(gè)列匹配產(chǎn)生關(guān)系的3)左聯(lián)結(jié):leftjoin會(huì)將左側(cè)表中的數(shù)據(jù)取出來,文氏圖中左聯(lián)結(jié)就是學(xué)生表中的部分如何進(jìn)行運(yùn)行的第一步左聯(lián)結(jié)就是左側(cè)的表作為主表,主表中的數(shù)據(jù)全部讀取出來,也就是將學(xué)生表中的數(shù)據(jù)全部取出來,右邊的表中只選出和左邊表中相同學(xué)號的行也就是學(xué)號0001所在的兩行數(shù)據(jù)將兩個(gè)表中取出的數(shù)據(jù)進(jìn)行合并,如何合并:這里就要進(jìn)行交叉聯(lián)結(jié)了,因?yàn)閷W(xué)號0002在右邊的表里沒有對應(yīng)的行,所以這一行對應(yīng)的列的值就是空值對應(yīng)的SQL語句-左聯(lián)結(jié)leftjoinSQL語句Selecta.學(xué)號,a.姓名,b.課程號Fromstudentasal
10、eftjoinscoreasbOna.學(xué)號=b.學(xué)號氣”,葉Er?-工吉prrinSi,1'口477-Iki»4丄J1L7比"ILJ159 q*學(xué)號q»姓名.b課程號|160 Froir;studentasaleftjoinscoreasb16LOna學(xué)號=b學(xué)號162163信息結(jié)果1ffiKR狀態(tài)學(xué)導(dǎo)課程號_0001猴子00030002猴子00020002濮子00030003馬云0001我們再來看'個(gè)問題00020003馬云00030004(Null)左聯(lián)結(jié)的基礎(chǔ)上,圖片中紅色部分的地方如何用SQL表示呢(score)姓名出生日嚥麗猴子1988-
11、01-010002猴子199012-21女學(xué)5表(st-jdent)聯(lián)結(jié)學(xué)號i襁號峨00310001B00031m2卯Q0D5OOQ360成績表030100Q5表中的公共部分D0024)右聯(lián)結(jié):rightjoin這是在左聯(lián)結(jié)中去掉了兩個(gè)表中共同的地方,SQL語句-左聯(lián)結(jié)中去掉公共部分Selecta.學(xué)號,a.姓名,b.課程號FromstudentasaleftjoinscoreasbOna.學(xué)號=b.學(xué)號Whereb.學(xué)號isnull;丄no159-左.聯(lián)結(jié)中去掉公共鄒分16CSelecta.學(xué)號”a.姓名b.課程號161 Fromstudentssaleftjoinscoreasb162 O
12、na.學(xué)號=b,學(xué)號163 hersb.學(xué)號isnu.ll;164 |165信息結(jié)杲1翻舷學(xué)號姓名鞘呂右聯(lián)結(jié)會(huì)將右側(cè)表中的數(shù)據(jù)全部取出來,圖片中文氏圖畫出了右聯(lián)結(jié)是紅色圖的地方第一步:兩行表通過學(xué)號進(jìn)行右聯(lián)結(jié),就是將成績表里的數(shù)據(jù)全部取出來左邊表只選出和右邊表相同學(xué)號的行第二步:將兩張表中取出的數(shù)據(jù)合并:如何合并:就是進(jìn)行交叉聯(lián)結(jié)了,因?yàn)閷W(xué)號0005在左邊的表中沒有相應(yīng)的行,這一行對應(yīng)的列是空值。SQL語句-右聯(lián)結(jié)rightjoinSQL語句Selecta.學(xué)號,a.姓名,b.課程號FromstudentasarightjoinscoreasbOna.學(xué)號=b.學(xué)號11517E17ns112-
13、右聯(lián)結(jié)rightjoir.SQL語句Select乳學(xué)號a.姓名J,保程號FromstudetitasarightjoinscoreasbOna,學(xué)號二b.學(xué)號在右聯(lián)結(jié)的基礎(chǔ)上,我們再來看一個(gè)問題,圖比中紅色部分應(yīng)該如何用SQL表示呢這是在右聯(lián)結(jié)的基礎(chǔ)上去掉了兩個(gè)表中共同的地奈去掉了兩張表中共同的地方SQL語句0031狠子0D010001抿子00020031猴子0D030032猴子M02OOJ2猴子OD03-leftjoin右聯(lián)結(jié)去掉相同列的SQL語句Selecta.學(xué)號,a.姓名,b.課程號FromstudentasarightjoinscoreasbOna.學(xué)號=b.學(xué)號Wherea.學(xué)號i
14、snull;5)全聯(lián)結(jié):fulljoin全聯(lián)結(jié)的查詢結(jié)果會(huì)返回左表和右表中的所有行,當(dāng)某行和另一個(gè)表中有匹配的時(shí)候兩個(gè)行進(jìn)行合并,如果某行和另一個(gè)表中沒有匹配的行的時(shí)候,另一個(gè)表中沒有的值用空值填充,在圖片中看出了有兩行空值,分別是左聯(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ù)的表單,或者特別說明了要哪一張表里的全部數(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ù)問題select萱詢結(jié)果from從哪張表中酣數(shù)據(jù)聯(lián)結(jié))where査詢條件(§算飪模麹登詢:groupby仝組海4)tw帕對分組結(jié)杲蹙條件0旳加對查詢結(jié)東毎序sql運(yùn)行廂序:1冼運(yùn)f抒餉Z每個(gè)查詢語句里運(yùn)柯瞬L)先運(yùn)行藍(lán)
16、框里的子句2)select?句3)最后運(yùn)巧紅框里的子句主要分為三個(gè)步驟1、翻譯成大白話2、寫出分析思路3、寫出對應(yīng)的SQL子句案例問題1:查詢所有學(xué)生的學(xué)號、姓名、選課數(shù)、總成績1、翻譯成大白話1)學(xué)號、姓名(學(xué)生表student)2)選課數(shù)(每個(gè)學(xué)生的選課數(shù)目):成績表score按學(xué)號分組,對課程號計(jì)數(shù)count3)總成績(每個(gè)學(xué)生的總成績:成績表score,4)按學(xué)號分組,對成績求和sum2、寫出分析思路查詢所有學(xué)生的學(xué)號、姓名、每個(gè)學(xué)生的選課數(shù)目、每個(gè)學(xué)生的總成績Select查詢結(jié)果【學(xué)號,姓名,選課數(shù),總成績】From從哪張表中查找數(shù)據(jù)【學(xué)生表student,成績表score兩個(gè)表如何
17、聯(lián)結(jié)?通過學(xué)號哪種聯(lián)結(jié)?左聯(lián)結(jié)】Where查詢結(jié)果【沒有】Groupby分組【每個(gè)學(xué)生的選課數(shù)目:按學(xué)號分組,對課程號計(jì)數(shù)count)每個(gè)學(xué)生的總成績:按學(xué)號分組,對成績求和sum)】Having對分組結(jié)果指定條件【沒有】Orderby對查詢結(jié)果排序【沒有】Limit從查詢結(jié)果中取出指定行【沒有】3、寫出對應(yīng)的SQL語句-查詢所有學(xué)生的學(xué)號、姓名、選課數(shù)、總成績-查詢所有學(xué)生的學(xué)號、姓名、選課數(shù)、總成績Select學(xué)號,姓名,count(課程號)as選課數(shù),sum(成績)as總成績FromstudentasaleftjoinscoreasbOna.學(xué)號=b.學(xué)號Groupbya.學(xué)號2、寫出分
18、析思路Select查詢結(jié)果【學(xué)號,姓名,平均成績】From從哪張表中查找數(shù)據(jù)【學(xué)生表student,成績表score兩個(gè)表如何關(guān)聯(lián)?通過學(xué)號用哪種聯(lián)結(jié)?左聯(lián)結(jié)】Where查詢條件【沒有】Groupby分組【每個(gè)學(xué)生的選課項(xiàng)目:按學(xué)號分組,對課程號計(jì)數(shù)count每個(gè)學(xué)生的總成績:按學(xué)號分組,對成績求和sum】Having對分組結(jié)果指定條件【沒有】Orderby對查詢結(jié)果排序【沒有】Limit從查詢結(jié)果中取出指定行【沒有】;3、寫出對應(yīng)的SQL子句-查詢所有學(xué)生的學(xué)號、姓名、平均成績Selecta.學(xué)號,a.姓名,avg(b.成績)as平均成績Fromstudentasaleftjoinscore
19、asbOna.學(xué)號=b.學(xué)號P701020304050607Groupbya.學(xué)號;查詢所有學(xué)生旳學(xué)號、妊名、平覽或績Selecta.學(xué)號f3.姓名favg(b.成績)己s平均成績Fromszudsntaaaleftjoinscoreas二Dn乳學(xué)號龍,學(xué)號Sroupby己.學(xué)號;信息結(jié)杲1諏學(xué)號好平均瞬001抿子89.66670C02舉子70.0030查詢平均成績大于85的所有學(xué)生的學(xué)號、壟名和平均成績°iNulli卜0204王巨聰-查詢平均成績大于85的所有學(xué)生的學(xué)號、姓名和平均成績Selecta.學(xué)號,a.姓名,avg(b.成績)as平均成績Fromstudentasaleft
20、joinscoreasbOna.學(xué)號=b.學(xué)號Groupbya.學(xué)號Havingavg(b.成績)>85;£ti加9-查詢平均成績.瓦于瞪茹祈有學(xué)生的學(xué)號、姓名彌平墳成績21CSslecta,學(xué)號”己.姓名/avg(b.成績)as平均成績211 FrcmStuderasalEftjoinscoreasb212 Or.a.學(xué)號=1.學(xué)號213 Groupjzya.學(xué)號214 Having-avg(b.>35;2152162171)學(xué)號,姓名(學(xué)生表student)2)課程號,課程名稱(課程表course)SQL語句查詢學(xué)生的選課情況Selecta.學(xué)號,a.姓名,c.課程號
21、,c.課程名稱Fromstudentainnerjoinscorebona.學(xué)號=b.學(xué)號Innerjoincourseconb.課程號=c.課程號;217218212220B上'ffl古irrI"jMi'*IS,5-lect乳學(xué)號用.姓名課程號課程名稱rrornstudentainnerjcir.scorebon日.學(xué)號二b,學(xué)號Innerjoincourseconb課程號課穆號;0002振子0002數(shù)學(xué)0002四、Cas表達(dá)式一猴子0003英語馬云0001語文什么是Case表達(dá)式?二二0002數(shù)孚結(jié)果1WJ?學(xué)號姓名渥程名稱0001猴子0001語文00010002
22、數(shù)學(xué)T1Case表達(dá)式可以幫助我們解決復(fù)雜的查詢問題,case表達(dá)的作用就相當(dāng)于進(jìn)行一個(gè)條件判斷的函數(shù)用來判斷每一行是不是滿,條件,圖片中給出了case表達(dá)式的語句,里面的wen子句的判斷表達(dá)式,來判斷某行數(shù)據(jù),是否符合某個(gè)條件,如果符合條件后面的then子句,case表達(dá)式運(yùn)行到此結(jié)束,就不會(huì)運(yùn)行后面的when子句了,如果不符合條件就進(jìn)入下一個(gè)when子句,如果后面的when子句都沒有找到合適的數(shù)據(jù),那么就會(huì)運(yùn)行else中的表達(dá)式Casewhen判斷表達(dá)式the門表達(dá)式when判斷表達(dá)式the門表達(dá)式when判斷表達(dá)式the門表達(dá)式Else表達(dá)式End案例:判斷學(xué)生成績是否及格判斷學(xué)生成績是
23、否及格Select學(xué)號,課程號,成績,(casewhen成績>=60then及格'When成績<60then不及格Elsenullend)as是否及格fromscore;303304 判斷學(xué)生成績是否及格305 Select學(xué)號#課程號*成績306 (casewhen成績then'及格丫307 When成績V60then不及格303Elsenull32end)s是否及格31Lfromscore;)311312313信息結(jié)果1概況狀態(tài)0001000399及格0002000260及格00020003案例:查詢出每門課程的及格人數(shù)和不及格人數(shù)1)查詢出每門課程的人數(shù)i匸8
24、0及格000180及格0003-查詢出每門課程的人數(shù)Select課程號,Count(學(xué)號)as.人數(shù)Fromscore""Groupby課程號;0002000380及格80及格學(xué)號課程號成績是否及格0001000180及搭90及格000100022)查詢出每門課程的及格人數(shù)和不及格人數(shù)-查詢出每門課程的及格人數(shù)和不及格人數(shù)Select課程號,Sum(casewhen成績=60then1else0end)as及格人數(shù),sum(casewhen成績60then1else0end)as不及格人數(shù)fromscoregroupby課程號;erniit-?m比L_:占r/r詁琵鞅JIJ
25、4-LJ1J+LTfZ%LJk1icy去hJ.,.-J-'?未t丄dbyJJ弋¥JT壬口HiX.'PzX.X.TM314 Select課程號,315 s(:asewhen成績K0then1316 else031"end)as及賂人數(shù)#318 sun(casewhen成績心匸hen1319 else0320 end)as不及格人數(shù)321 frorr.score322 groupby課程號;323324課程號case表達(dá)式注意事I項(xiàng)|能及胳人數(shù)結(jié)果1狀態(tài)CaseU1when判斷表達(dá)式then表達(dá)式:when判斷表達(dá)式the門表達(dá)式when判斷表達(dá)式the門表達(dá)式
26、Else表達(dá)式else可以省略,默認(rèn)為空值End.end不能省略不寫的Case表達(dá)式能寫在SQL語句中任意語句中case表達(dá)式有什么用,什么時(shí)候比較好用呢當(dāng)有多種條件判斷的時(shí)候使用case表達(dá)式了案例:使用分段100-85,85-70,70-6060來統(tǒng)計(jì)各科成績,分別統(tǒng)計(jì):各分?jǐn)?shù)段人數(shù)(成績表score),課程號和課程名稱(課程表course)/*使用分段100-85,85-70,70-60<60來統(tǒng)計(jì)各科成績,分別統(tǒng)計(jì):各分?jǐn)?shù)段人數(shù)(成績表score),課程號和課程名稱(課程表course)*/Select&課程號,b.課程名稱,Sum(casewhen成績between85
27、and100Then1else0end)as'100-85',Sum(casewhen成績>=70and成績<85Then1else0end)as'85-70',Sum(casewhen成績>=60and成績<70Then1else0end)as'70-60',Sum(casewhen成績<60Then1else0end)as'<60'FromscoreasarightjoincourseasbOna.課程號=b.課程號326E.'2I32832933033133233333433533
28、6337338339340341Groupbya.課程號,b.課程名稱成績between85ani10Jend)as1100-85成績>=_ana成績也三end)as'35-70成and成績VendJas'口卜&仍成績丈切燈51elsa0end)as'<601曰righjoincourseasbSelecta.課程號.課程名琢,Th&n1elseCSui(cise>.:herrh?n1elseCSmufccsehenThsn1ele0Sim(c:£5e:her.FromscoreasOna.誤程號動(dòng).課程號Grouphy日”課
29、程號川”課程宅稱;當(dāng)用多個(gè)列來分組時(shí)這凡個(gè)列的值全部相同才算一組-:'-_+口H*0001語丈D20五、練習(xí)題SQLZODDjOin/*1、第一個(gè)例子列出球員姓氏為'Bender'的入球數(shù)據(jù)。*表示列出表格的全部欄位,簡化了寫matchid,teamid,player,gtime語句。修改此SQL以列出賽事編號matchid和球員名player,該球員代表德國隊(duì)Germany入球的。要找出德國隊(duì)球員,要檢查:teamid='GER'*/SELECTmatchid,playerFROMgoalWHEREteamid='GER'matchid
30、p怡疽SCCEMmrinGdmeiieicMdriaCjorr&z1C1Cari&Gorrez1C12跡Pocolski1C12_aisBinder1CM-3ilippLahm1C2f1圣翌總朋;.CornetEinsw&rtgnid,下仙”,包緻血Q刪出亞輛北吵處刊豳名盟村鬲鵝畑酯廡11伽認(rèn)剛*墜跚陽卑關(guān),慕顯:2d=如巫邀T帕toitLish聞吧皿】raniMwii='or/*2、由以上查詢,你可見LarsBender's於賽事1012入球?,F(xiàn)在我們想知道此賽事的對賽隊(duì)伍是哪一隊(duì)。留意在goal表格中的欄位matchid,是對應(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來同時(shí)進(jìn)行以上兩個(gè)步驟。SELECT*FROMgameJOINgoalON(id=matchid)語句FROM表示合拼兩個(gè)表格g
32、ame和goal的數(shù)據(jù)。語句ON表示如何找出game中每一列應(yīng)該配對goal中的哪一列-goal的id必須配對game的matchid。簡單來ON(game.id=goal.matchid)以下SQL列出每個(gè)入球的球員(來自goal表格)和場館名(來自game表格)修改它來顯示每一個(gè)德國入球的球員名,隊(duì)伍名,場館和日期。*/SELECTy.player,y.teamid,x.stadium,x.mdateFROMgameasxinnerJOINgoalasyON(x.id=y.matchid)whereteamid='GER'ffcjeXi保M4ik>右旣ctn戶Hfid
33、Lw、此ne摘上麗町祜心沁;!Siadin13.U1&23I2tenSWkii;TW1.劃Podddd/fundtw17La丹BandsFHHLWV17.ire23t21:何誦Lain豎AGEX1缶佃臥伽iKi>dwaWjEArw心佝臥應(yīng)aune23li2必rt此:.n乳呻'3®曲口Rd*:陽即R0曾硏書制何刃希m如中0約K3IHHOCtt蘇餌劃1gm阿舟一亍旦當(dāng)帥対中的一弘呻兇1的襯筈SG?紳mi的nW4W.艘珮.就是OKigtu.中號鍛1-:血£)SlET-yplfainr.k>UdwLii3:4TEXEmhkimffJOEFp-Altiya
34、kM-JiSd)/*4、使用上題相同的JOIN語句,列出球員名字叫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貯存了每一國家隊(duì)的資料,包括教練。你可以使用語句goalJOINeteamonteamid=id來合拼JOIN表格goal到表格eteam。列出每場球賽中首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,川如祇對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、,射入德國龍門的球員名字。*/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嚇*詢¥77¥Qkr爐陽頤晌1;rE疔1-'川謠詛1LSubnitMLCorrectansvrermatchidnt-dateCiDuntitupaye.-1師BJuneSJI:2I«t412Jum20122剛iJtiiwl21j'rrl:1711、每一場波蘭'POL'有參與的賽事中,列出賽事編號matchid,日期date和入球數(shù)字。*/SELECTb.matchidamdate,count(b.player)FRO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年校車租賃與校園設(shè)施維修合同3篇
- 專屬2024版員工持股激勵(lì)合同范本版B版
- 2025版移動(dòng)支付服務(wù)商免責(zé)協(xié)議書標(biāo)準(zhǔn)范本4篇
- 二零二五年調(diào)味料品牌授權(quán)與銷售合作協(xié)議樣本3篇
- 個(gè)人承包物業(yè)合同范本
- 裝修工程環(huán)境保護(hù)及安全防護(hù)協(xié)議(2025年度)2篇
- 2024退休人員在線心理咨詢服務(wù)合同模板下載3篇
- 三方房屋買賣合同范本
- 二零二五版頂管工程安全教育培訓(xùn)及考核合同3篇
- 個(gè)人企業(yè)貸款合同書2024年適用版版B版
- 松下-GF2-相機(jī)說明書
- 產(chǎn)教融合背景下“一體兩翼三融合五重點(diǎn)”創(chuàng)新創(chuàng)業(yè)人才培養(yǎng)機(jī)制研究
- 新型智慧水利項(xiàng)目數(shù)字孿生工程解決方案
- 煤焦化焦油加工工程設(shè)計(jì)規(guī)范
- 2024年人教版小學(xué)三年級信息技術(shù)(下冊)期末試卷附答案
- 新蘇教版三年級下冊科學(xué)全冊知識點(diǎn)(背誦用)
- 鄉(xiāng)鎮(zhèn)風(fēng)控維穩(wěn)應(yīng)急預(yù)案演練
- 腦梗死合并癲癇病人的護(hù)理查房
- 蘇教版四年級上冊脫式計(jì)算300題及答案
- 犯罪現(xiàn)場保護(hù)培訓(xùn)課件
- 扣款通知單 采購部
評論
0/150
提交評論