丨常用的有哪些在sql92中是如何使用連接_第1頁(yè)
丨常用的有哪些在sql92中是如何使用連接_第2頁(yè)
丨常用的有哪些在sql92中是如何使用連接_第3頁(yè)
丨常用的有哪些在sql92中是如何使用連接_第4頁(yè)
丨常用的有哪些在sql92中是如何使用連接_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

我們知道SQL的英文全稱叫做StructuredQuery 之間進(jìn)行連接查詢(Query)。這是因?yàn)镾QL是建立在關(guān) 存在多種數(shù)據(jù)之間的關(guān)系。而我們之所以能使用SQL語(yǔ)言SELECTSQLSQL也有不同。你首先需要了解常用的SQL標(biāo)準(zhǔn)有哪些;了解了SQL的標(biāo)準(zhǔn)之后,我們從SQL92標(biāo)準(zhǔn),來(lái) SQL在正式開始講連接表的種類時(shí),我們首先需要知道SQL存SQL有兩個(gè)主要的標(biāo)準(zhǔn),分別是SQL92和SQL99。92和99代表了標(biāo)準(zhǔn)時(shí)間,SQL92就是92年標(biāo)準(zhǔn)規(guī)范。當(dāng)然除了SQL92和SQL99以外,還存在SQL-86、SQL-89、SQL:2003、SQL:2008、SQL:2011和SQL:2016這么多標(biāo)準(zhǔn),到底該學(xué)習(xí)哪個(gè)呢?實(shí)際上最重要的SQL標(biāo)準(zhǔn)就是SQL92和SQL99。一般來(lái)說(shuō)SQL92的形式更簡(jiǎn)單,但是寫的SQL語(yǔ)句 比較長(zhǎng),可讀性較差。而SQL99相比于SQL92來(lái)說(shuō),語(yǔ)法更加復(fù)雜,但可讀性更強(qiáng)。我們從這兩個(gè)標(biāo)準(zhǔn)發(fā)布的頁(yè)數(shù)也能看出,SQL92的標(biāo)準(zhǔn)有500頁(yè),而SQL99標(biāo)準(zhǔn)超過(guò)了1000頁(yè)。實(shí)際上你不用擔(dān)心要學(xué)習(xí)這么多內(nèi)容,基本上從SQL99之后,很少有人能掌握所有內(nèi)容,因?yàn)榇_實(shí)太多了。就好比我們使用Windows、SQL92相比于SQL99,SQL92規(guī)則更簡(jiǎn)單,更適合。在這篇文章中,我會(huì)先講SQL92是如何對(duì)連接表進(jìn)行操作的,下一篇文章再講SQL99,到時(shí)候你可以對(duì)比下這兩者之間有NBA球員和球隊(duì)兩,SQL文件你可以從 其中yer表為球員表,一共有37個(gè)球員,如下所示team3有了這兩個(gè)數(shù)據(jù)表之后,我們?cè)賮?lái)看下SQL92中的5種連接方式,它們分別是笛卡爾積等值連接非等值連接外連笛卡爾乘積是一個(gè)數(shù)算。假設(shè)我有兩個(gè)集合X和Y,那么X和Y的笛卡爾積就是X和Y的所有可能組合,也就是第一個(gè)對(duì)象來(lái)自于X,第二個(gè)對(duì)象來(lái)自于Y的所有可能。我們假定yer表的數(shù)據(jù)是集合X,先進(jìn)行SQL查詢1SELECT*FROMteamYSQL1SELECT*FROM1SQL:SELECT*FROMyer,運(yùn)行結(jié)果(一共37*3=111條記錄積也稱為交叉連接,英文是CROSSJOIN就是可以把任意表進(jìn)行連接,即使這兩不相關(guān)。但我們WHERE們也可以對(duì)多進(jìn)行等值連接。針對(duì)yer表和team表都存在team_id這一列,我們可1SQL:SELECTyer_id,yer.team_id,yer_name,運(yùn)行結(jié)果(一共37條記錄我們?cè)谶M(jìn)行等值連接的時(shí)候,可以使用表的別名,這樣1SELECTyer_id,a.team_id,yer_name,height,SQL查詢就會(huì)報(bào)錯(cuò):1SELECTyer_id,yer.team_id,yer_name, 個(gè)身高級(jí)別表heightgrades,如下所示我們知道yer表中有身高h(yuǎn)eight字段,如果想要知道每1SQL:SELECTp.yer_name,p.height,2FROMyerASp,height_gradesAS3WHEREp.heightBETWEENh.height_lowestAND運(yùn)行結(jié)果(37條記錄 滿足條件的記錄。兩的外連接,會(huì)有一張是主表,另一張是從表。如果是多的外連接,那么第一是主表,SQL92中采用(+)代表從表所在的位置,而且在SQL921SQL:SELECT*FROMyer,teamwhereyer.team_id相當(dāng)于SQL991SQL:SELECT*FROMyerLEFTJOINteamon1SQL:SELECT*FROMyer,teamwhere相當(dāng)于SQL991SQL:SELECT*FROMyerRIGHTJOINteamon需要注意的是,LEFTJOINRIGHTJOINSQL99SQL921SQL:SELECTb.yer_name,b.heightFROMyerasa運(yùn)行結(jié)果(6條記錄· ·1SQL:SELECTheightFROMyerWHEREyer_name='布運(yùn)行結(jié)果為2.082.081SQL:SELECTyer_name,heightFROMyerWHERESQLSQL92SQL92和SQL99是經(jīng)典的SQL標(biāo)準(zhǔn),也分別叫做SQL-2和SQL-3標(biāo)準(zhǔn)。也正是在這兩個(gè)標(biāo)準(zhǔn)發(fā)布之后,SQL影響力越來(lái)越大,甚至了數(shù)據(jù)庫(kù)領(lǐng)域。現(xiàn)如今SQL已經(jīng)不SQL語(yǔ)言的使用。除此以外,我們使用的主流RDBMS,比如MySQL、Oracle、SQLSever、DB2、PostgreSQL等都支持SQL語(yǔ)言,也就是說(shuō)它們的使用符合大部分SQL標(biāo)準(zhǔn),但很難完全符合,因?yàn)檫@些數(shù)據(jù)庫(kù)管理系統(tǒng)都在SQL語(yǔ)言的基礎(chǔ)上,根據(jù)自身產(chǎn)品的特點(diǎn)進(jìn)行了擴(kuò)充。即使這樣,SQL語(yǔ)言也是目前所有語(yǔ)言中半衰期最長(zhǎng)的,在1992年,Windows3.1發(fā)布,SQL92標(biāo)準(zhǔn)也同時(shí)發(fā)布,如今我們?cè)鏦indows3.1SQL92當(dāng)然我們也要注意到SQL標(biāo)準(zhǔn)的變化,以及不同數(shù)據(jù)庫(kù)管理系統(tǒng)使用時(shí)的差別,比如Oracle對(duì)SQL92支持較好,而MySQL則不支持SQL92的外連接。我今天講解了SQL的連接操作,你能說(shuō)說(shuō)內(nèi)連接、外連接team做一道動(dòng)手題,表格中一共有3支球隊(duì),現(xiàn)在這3支球隊(duì)需要進(jìn)行比賽,請(qǐng)用一條SQL語(yǔ)句顯示出所有可能的比賽 售賣。頁(yè)面已增加防盜追蹤,上一 下一 mickeyteam37SELECT*FROMteamASa,teamASbWHEREa.team_id<b.team_idSELECTa.team_nameas主場(chǎng),b.team_nameas2SQL:SELECTp.yer_name,p.height,FROMyerASp,height_gradesASWHEREp.heightBETWEENh.height_lowestAND…1select*fromteamasa,teamasbwhere!= |team_id|team_name|team_id|team_name1SELECTt1.team_name,t2.team_nameFROMteamt1LEFTJOINteamast2ONt1.team_id!=SELECTt1.team_name,t2.team_nameFROMteamast1,teamast2wheret1.team_id<t2.team_id;作者回復(fù):正確,大家可以參考下這個(gè)。如果是分主客場(chǎng)的1SELECT*FROMa,bSELECT*FROMaJOIN下的+號(hào)方式的外連接,但是支持SQL99的外連接方式。1/*等值連接:兩存在相同的列屬性SELECTyer_id,yer.team_id,yer_name,height,team_nameFROMyer,teamWHEREyer.team_id=team.team_id;…11SELECT*FROMteamt1,teamt2WHERE<>t2.team_idORDERBYt1.team_idVS SELECTt1.team_nameast2.team_nameas場(chǎng)'FROMteamast1teamast2WHERE!=作者回復(fù):!=和<>作用是一樣的(具體看RDBMS是否支件有什么區(qū)別呢?這兩個(gè)的篩選順序一樣嗎?作者回復(fù):1、查詢順序是:FROM>WHERE>GROUPBYHAVINGSELECTDISTINCTORDERBY>LIMITCROSSJOIN積,然后進(jìn)->FROMteamASa,teamAS->WHEREa.team_id 功能由會(huì)產(chǎn)生SQL:導(dǎo)致無(wú)法執(zhí)行,SQL:SELECTyer_id,yer.team_id,yer_name,height,team_nameFROMyer,teamWHEREyer.team_id=team.team_id1 select*fromteamasa,teamasbwherea.team_id<>b.team_id;SELECTa.team_nameASb.team_nameAS隊(duì)'FROMteamASateASbWHEREa.team_name!= ||SELECTa.team_nameASb.team_nameASFROMteamASa,teamASbWHERESELECT*FROMteamASa,teamASbWHERESQ

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論