![sql 各種連接方式的區(qū)別_第1頁](http://file4.renrendoc.com/view/a86257467220515d59a2e4bc7060be7b/a86257467220515d59a2e4bc7060be7b1.gif)
![sql 各種連接方式的區(qū)別_第2頁](http://file4.renrendoc.com/view/a86257467220515d59a2e4bc7060be7b/a86257467220515d59a2e4bc7060be7b2.gif)
![sql 各種連接方式的區(qū)別_第3頁](http://file4.renrendoc.com/view/a86257467220515d59a2e4bc7060be7b/a86257467220515d59a2e4bc7060be7b3.gif)
![sql 各種連接方式的區(qū)別_第4頁](http://file4.renrendoc.com/view/a86257467220515d59a2e4bc7060be7b/a86257467220515d59a2e4bc7060be7b4.gif)
![sql 各種連接方式的區(qū)別_第5頁](http://file4.renrendoc.com/view/a86257467220515d59a2e4bc7060be7b/a86257467220515d59a2e4bc7060be7b5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)據(jù)庫innerjoin,leftjoin,rightjoin的區(qū)另Uinnerjoin:內(nèi)連接,結果只包含滿足條件的列。leftjoin:左外連接,結果包含滿足條件的行及左側表中的全部行。rightjoin:右外連接,結果包含滿足條件的行及右側表中的全部行。SQL語句(innerjoin,leftoutjoin,rightoutjoin)leftjoin:左連接,返回左表中所有的記錄以及右表中連接字段相等的記錄。rightjoin:右連接,返回右表中所有的記錄以及左表中連接字段相等的記錄。innerjoin:內(nèi)連接,又叫等值連接,只返回兩個表中連接字段相等的行。fulljoin:外連接,返回
2、兩個表中的行:leftjoin+rightjoincrossjoin:結果是笛卡爾積,就是第一個表的行數(shù)乘以第二個表的行數(shù)。declareatable(aint,bint)declarebtable(aint,bint)insertavalues(1,1)insertavalues(2,2)insertbvalues(1,1)insertbvalues(3,3)select*fromaselect*fromb-左:select*from*=Bb.a-右:seiect*from*=Bba-內(nèi)seiect*from*=Bba-外:seiect*from*=Bba-交叉連接select*fromac
3、rossjoinbleft以左邊為準右邊有則顯示無則NULLright反之inner只取都不null的,相當于用froma,bwhere?=?(連接是on?=?)leftjoin和leftouterjoin的區(qū)別通俗的講:AleftjoinB的連接的記錄數(shù)與A表的記錄數(shù)同ArightjoinB的連接的記錄數(shù)與B表的記錄數(shù)同AleftjoinB等價BrightjoinA舉個例子:假設a表和b表的數(shù)據(jù)是這樣的。abidnameidstock1a1152b2503cselect*fromainnerjoinbona.id=b.id這個語法是連接查詢中的內(nèi)連接,它產(chǎn)生的結果是兩個表相匹配的記錄出現(xiàn)在結
4、果列表中。根據(jù)上面的表,出現(xiàn)的結果是這樣的a.idnameb.idstock1a1152b250select*froma,bwherea.id=b.id這個語法是內(nèi)連接的另外一種寫法,其執(zhí)行結果與innerjoin樣select*fromaleft/rightjoinbona.id=b.id這個是外連接語法中的左外連接或右外連接如果是左外連接的話,它將顯示a表的所有記錄,selecta.*,b.*fromaleftjoinbona.id=b.id查詢的結果是這樣的:a.idnameb.idstock1a1152b2503cnullnull如果是右外連接的話,它將顯示b表的所有記錄,select
5、a.*,b.*fromarightjoinbona.id=b.id查詢的結果是這樣的:a.idnameb.idstock1a1152b250selecta.*,b.*fromaleftjoinbona.k=b.kselecta.*,b.*fromaleftouterjoinbona.k=b.k上面兩種一樣leftjoin是leftouterjoin的簡寫selecta.*,b.*fromaleftinnerjoinbona.k=b.k沒有這種寫法,錯誤的語句在你要使用多個leftjoin的時候比如說10個我們把10個全都寫成leftjoin的形式然后再SQL讓他自動運行一下,它會把最后一次出現(xiàn)
6、的leftjoin變成leftouterjoin所以依此推理,最后一個leftjoin會以leftouterjoin的形式存在當然,不管變不變對結果的顯示沒有任何影響希望我的實驗能對你有所幫助使用關系代數(shù)合并數(shù)據(jù)1關系代數(shù)合并數(shù)據(jù)集合的理論基礎是關系代數(shù),它是由E.F.Codd于1970年提出的。在關系代數(shù)的形式化語言中:用表、或者數(shù)據(jù)集合表示關系或者實體。P用行表示兀組。P用列表示屬性。P關系代數(shù)包含以下8個關系運算符選取一一返回滿足指定條件的行。p投影一一從數(shù)據(jù)集合中返回指定的列。p笛卡爾積一一是關系的乘法,它將分別來自兩個數(shù)據(jù)集合中的行以所有可能的方式進行組合。p并一一關系的加法和減法,
7、它可以在行的方向上合并兩個表中的數(shù)據(jù),就像把一個表壘在另一個表之上一樣。p交一一返回兩個數(shù)據(jù)集合所共有的行。p差一一返回只屬于一個數(shù)據(jù)集合的行。p連接在水平方向上合并兩個表,其方法是:將兩個表中在共同數(shù)據(jù)項上相互匹配的那些行合并起來。p除一一返回兩個數(shù)據(jù)集之間的精確匹配。p此外,作為一種實現(xiàn)現(xiàn)代關系代數(shù)運算的方法,SQL還提供了:子查詢一一類似于連接,但更靈活;在外部查詢中,方式可以使用表達式、列表或者數(shù)據(jù)集合的地方都可以使用子查詢的結果。p本章將主要講述多種類型的連接、簡單的和相關的子查詢、幾種類型的并、關系除以及其他的內(nèi)容。2使用連接2.1連接類型在關系代數(shù)中,連接運算是由一個笛卡爾積運算
8、和一個選取運算構成的。首先用笛卡爾積完成對兩個數(shù)據(jù)集合的乘運算,然后對生成的結果集合進行選取運算,確保只把分別來自兩個數(shù)據(jù)集合并且具有重疊部分的行合并在一起。連接的全部意義在于在水平方向上合并兩個數(shù)據(jù)集合(通常是表),并產(chǎn)生一個新的結果集合,其方法是將一個數(shù)據(jù)源中的行于另一個數(shù)據(jù)源中和它匹配的行組合成一個新元組。SQL提供了多種類型的連接方式,它們之間的區(qū)別在于:從相互交疊的不同數(shù)據(jù)集合中選擇用于連接的行時所采用的方法不同。連接類型定義內(nèi)連接只連接匹配的行左外連接包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行),以及右邊表中全部匹配的行右外連接包含右邊表的全部行(不管左邊的表中是否存
9、在與它們匹配的行),以及左邊表中全部匹配的行全外連接包含左、右兩個表的全部行,不管另外一邊的表中是否存在與它們匹配的行。(H)(theta)連接使用等值以外的條件來匹配左、右兩個表中的行交叉連接生成笛卡爾積一它不使用任何匹配或者選取條件,而是直接將一個數(shù)據(jù)源中的每個行與另一個數(shù)據(jù)源的每個行都一一匹配在INFORMIX中連接表的查詢?nèi)绻鸉ROM子句指定了多于一個表引用,則查詢會連接來自多個表的行。連接條件指定各列之間(每個表至少一列)進行連接的關系。因為正在比較連接條件中的列,所以它們必須具有一致的數(shù)據(jù)類型。SELECT語句的FROM子句可以指定以下幾種類型的連接FROM子句關鍵字相應的結果集C
10、ROSSJOIN笛卡爾乘積(所有可能的行對)INNERJOIN僅對滿足連接條件的CROSS中的列LEFTOUTERJOIN一個表滿足條件的行,和另一個表的所有行RIGHTOUTERJOIN與LEFT相同,但兩個表的角色互換FULLOUTERJOINLEFTOUTER和RIGHTOUTER中所有行的超集內(nèi)連接(InnerJoin內(nèi)連接是最常見的一種連接,它頁被稱為普通連接,而E.FCodd最早稱之為自然連接。下面是ANSISQL-92標準select*fromt_institutioniinnerjoint_tellertoni.inst_no=t.inst_nowherei.inst_no=5
11、801其中inner可以省略。等價于早期的連接語法select*fromt_institutioni,t_tellertwherei.inst_no=t.inst_noandi.inst_no=58012.3外連接左外連接(LeftOuterJion)select*fromt_institutionileftouterjoint_tellertoni.inst_no=t.inst_no其中outer可以省略。右外連接(RigtOuterJion)select*fromt_institutionirightouterjoint_tellertoni.inst_no=t.inst_no全外連接(F
12、ullOuter)全外連接返回參與連接的兩個數(shù)據(jù)集合中的全部數(shù)據(jù),無論它們是否具有與之相匹配的行。在功能上,它等價于對這兩個數(shù)據(jù)集合分別進行左外連接和右外連接,然后再使用消去重復行的并操作將上述兩個結果集合并為一個結果集。在現(xiàn)實生活中,參照完整性約束可以減少對于全外連接的使用,一般情況下左外連接就足夠了。在數(shù)據(jù)庫中沒有利用清晰、規(guī)范的約束來防范錯誤數(shù)據(jù)情況下,全外連接就變得非常有用了,你可以使用它來清理數(shù)據(jù)庫中的數(shù)據(jù)。select*fromt_institutionifullouterjoint_tellertoni.inst_no=t.inst_no外連接與條件配合使用當在內(nèi)連接查詢中加入條
13、件是,無論是將它加入到join子句,還是加入到where子句,其效果是完全一樣的,但對于外連接情況就不同了。當把條件加入到join子句時,SQLServer、Informix會返回外連接表的全部行,然后使用指定的條件返回第二個表的行。如果將條件放到where子句中,SQLServer將會首先進行連接操作,然后使用where子句對連接后的行進行篩選。下面的兩個查詢展示了條件放置位子對執(zhí)行結果的影響:條件在join子句select*fromt_institutionileftouterjoint_tellertoni.inst_no=t.inst_noandi.instno=5801inst_no
14、inst_nameinst_noteller_notell5801天河區(qū)58010001tom5801天河區(qū)58010002david5802越秀區(qū)5803白云區(qū)結果是:條件在where子句nameselect*fromt_institutionileftouterjoint_tellertoni.inst_no=t.inst_nowherei.inst_no=5801結果是:instnoinstname5801天河區(qū)5801天河區(qū)instnotellernotellername58010001tom58010002david2.4自身連接自身連接是指同一個表自己與自己進行連接。這種一元連接通
15、常用于從自反關系(也稱作遞歸關系)中抽取數(shù)據(jù)。例如人力資源數(shù)據(jù)庫中雇員與老板的關系。下面例子是在機構表中查找本機構和上級機構的信息。selects.inst_nosuperiornst,s.inst_namesup_inst_name,i.inst_no,i.inst_namefromt_institutionijoint_institutionsoni.superior_inst=s.inst_no結果是:superiornstsup_inst_nameinst_noinst_name800廣州市5801天河區(qū)800廣州市5802越秀區(qū)800廣州市5803白云區(qū)2.5交叉(無限制)連接交叉連
16、接用于對兩個源表進行純關系代數(shù)的乘運算。它不使用連接條件來限制結果集合,而是將分別來自兩個數(shù)據(jù)源中的行以所有可能的方式進行組合。數(shù)據(jù)集合中一的每個行都要與數(shù)據(jù)集合二中的每一個行分別組成一個新的行。例如,如果第一個數(shù)據(jù)源中有5個行,而第二個數(shù)據(jù)源中有4個行,那么在它們之間進行交叉連接就會產(chǎn)生20個行。人們將這種類型的結果集稱為笛卡爾乘積。大多數(shù)交叉連接都是由于錯誤操作而造成的;但是它們卻非常適合向數(shù)據(jù)庫中填充例子數(shù)據(jù),或者預先創(chuàng)建一些空行以便為程序執(zhí)行期間所要填充的數(shù)據(jù)保留空間。select*fromt_institutionicrossjoint_tellert在交叉連接中沒有on條件子句AP
17、PENDIX3.1A參考資料與資源MicrosoftSQLServerp2000BilePaulNielsenPaulNielsen的Web站點purl HYPERLINK http:/www.is www.is/url3.2注文章所有SQL在IBMInformixDynamicServerVersion9.40.TC2E1測試通過表A記錄如下:aIDaNuma20050111a20050112a20050113a20050114a20050115表B記錄如下:bIDbName200603240120060324022006032403200603240482006032408實驗如下:l.l
18、eftjoinsql語句如下:select*fromAleftjoinBonA.alD=B.blD結果如下:aIDaNumbIDbName1a20050111120060324012a20050112220060324023a20050113320060324034a20050114420060324045a20050115NULLNULL(所影響的行數(shù)為5行)結果說明:leftjoin是以A表的記錄為基礎的,A可以看成左表,B可以看成右表,leftjoin是以左表為準的.換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為:A.alD=B.blD).B
19、表記錄不足的地方均為NULL.2.rightjoinsql語句如下:select*fromArightjoinBonA.aID=B.bID結果如下:aIDaNumbIDbName1a20050111120060324012a20050112220060324023a20050113320060324034a2005011442006032404NULLNULL82006032408(所影響的行數(shù)為5行)結果說明:仔細觀察一下,就會發(fā)現(xiàn),和leftjoin的結果剛好相反,這次是以右表(B)為基礎的,A表不足的地方用NULL填充.3.innerjoinsql語句如下:select*fromAinn
20、erjoinBonA.alD=B.blD結果如下:aIDaNumbIDbName1a20050111120060324012a20050112220060324023a20050113320060324034a2005011442006032404結果說明:很明顯,這里只顯示出了A.alD=B.blD的記錄.這說明innerjoin并不以誰為基礎,它只顯示符合條件的記錄.以下為網(wǎng)上的一點資料LEFTJOIN操作用于在任何的FROM子句中,組合來源表的記錄。使用LEFTJOIN運算來創(chuàng)建一個左邊外部聯(lián)接。左邊外部聯(lián)接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有
21、相符值的記錄。語法:FROMtable1LEFTJOINtable2ONtable1.field1compoprtable2.field2說明:table1,table2參數(shù)用于指定要將記錄組合的表的名稱。fieldl,field2參數(shù)指定被聯(lián)接的字段的名稱。且這些字段必須有相同的數(shù)據(jù)類型及包含相同類型的數(shù)據(jù),但它們不需要有相同的名稱。compopr參數(shù)指定關系比較運算符:=,=或。如果在INNERJOIN操作中要聯(lián)接包含Memo數(shù)據(jù)類型或OLEObject數(shù)據(jù)類型數(shù)據(jù)的字段,將會發(fā)生錯誤。內(nèi)連接INNERJOIN:只顯示多表之間與關聯(lián)條件相匹配的列.外連接:LEFTJOIN:以左表為基礎,顯
22、示左表中的所有列,不管是否與關聯(lián)條件相匹配,而右表中的數(shù)據(jù)只顯示與關聯(lián)條件相匹配的列,不匹配的列以NULL字符填充.RIGHTJOIN:以右表為基礎,顯示右表中的所有列,不管是否與關聯(lián)條件相匹配,而左表中的數(shù)據(jù)只顯示與關聯(lián)條件相匹配的列,不匹配的列以NULL字符填充.FULLJOIN:顯示多個表中的所有的列,不匹配關聯(lián)條件的列以NULL字符填充.內(nèi)連接INNERJOIN:只顯示多表之間與關聯(lián)條件相匹配的列.外連接:LEFTJOIN:以左表為基礎,顯示左表中的所有列,不管是否與關聯(lián)條件相匹配,而右表中的數(shù)據(jù)只顯示與關聯(lián)條件相匹配的列,不匹配的列以NULL字符填充.RIGHTJOIN:以右表為基礎
23、,顯示右表中的所有列,不管是否與關聯(lián)條件相匹配,而左表中的數(shù)據(jù)只顯示與關聯(lián)條件相匹配的列,不匹配的列以NULL字符填充.FULLJOIN:顯示多個表中的所有的列,不匹配關聯(lián)條件的列以NULL字符填充.WHERE子句中使用的連接語句,在數(shù)據(jù)庫語言中,被稱為隱性連接。INNERJOINON子句產(chǎn)生的連接稱為顯性連接。(其他JOIN參數(shù)也是顯性連接)WHERE和INNERJOIN產(chǎn)生的連接關系,沒有本質(zhì)區(qū)別,結果也一樣。但是!隱性連接隨著數(shù)據(jù)庫語言的規(guī)范和發(fā)展,已經(jīng)逐漸被淘汰,比較新的數(shù)據(jù)庫語言基本上已經(jīng)拋棄了隱性連接,全部采用顯性連接了。一般要使得數(shù)據(jù)庫查詢語句性能好點遵循一下原則:在做表與表的連
24、接查詢時,大表在前,小表在后不使用表別名,通過字段前綴區(qū)分不同表中的字段查詢條件中的限制條件要寫在表連接條件前盡量使用索引的字段做為查詢條件語法格式:其實INNERJOINON的語法格式可以概括為:FROM(表1INNERJOIN表2ON表1.字段號二表2.字段號)INNERJOIN表3ON表1.字段號二表3.字段號)INNERJOIN表4ONMember.字段號二表4.字段號)INNERJOIN表XONMember.字段號二表X.字段號您只要套用該格式就可以了?,F(xiàn)成格式范例:雖然我說得已經(jīng)比較明白了,但為照顧初學者,我還是以本會員注冊系統(tǒng)為例,提供一些現(xiàn)成的語法格式范例,大家只要修改其中的數(shù)
25、據(jù)表名稱和字段名稱即可。連接兩個數(shù)據(jù)表的用法:FROMMemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort語法格式可以概括為:FROM表1INNERJOIN表2ON表1.字段號=表2.字段號連接三個數(shù)據(jù)表的用法:FROM(MemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort)INNERJOINMemberLevelONMember.MemberLevel=MemberLevel.MemberLevel語法格式可以概括為:FROM(表1I
26、NNERJOIN表2ON表1.字段號二表2.字段號)INNERJOIN表3ON表1.字段號=表3.字段號連接四個數(shù)據(jù)表的用法:FROM(MemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort)INNERJOINMemberLevelONMember.MemberLevel=MemberLevel.MemberLevel)INNERJOINMemberIdentityONMember.MemberIdentity=MemberIdentity.MemberIdentity語法格式可以概括為:FROM(表1INNERJO
27、IN表2ON表1.字段號二表2.字段號)INNERJOIN表3ON表1.字段號二表3.字段號)INNERJOIN表4ONMember.字段號二表4.字段號連接五個數(shù)據(jù)表的用法:FROM(MemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort)INNERJOINMemberLevelONMember.MemberLevel=MemberLevel.MemberLevel)INNERJOINMemberIdentityONMember.MemberIdentity=MemberIdentity.MemberIdentit
28、y)INNERJOINWedlockONMember.Wedlock=Wedlock.Wedlock語法格式可以概括為:FROM(表1INNERJOIN表2ON表1.字段號二表2.字段號)INNERJOIN表3ON表1.字段號二表3.字段號)INNERJOIN表4ONMember.字段號二表4.字段號)INNERJOIN表5ONMember.字段號二表5.字段號外聯(lián)接。外聯(lián)接可以是左向外聯(lián)接、右向外聯(lián)接或完整外部聯(lián)接。在FROM子句中指定外聯(lián)接時,可以由下列幾組關鍵字中的一組指定LEFTJOIN或LEFTOUTERJOIN。左向外聯(lián)接的結果集包括LEFTOUTER子句中指定的左表的所有行,而不
29、僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯(lián)的結果集行中右表的所有選擇列表列均為空值。RIGHTJOIN或RIGHTOUTERJOIN。右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。FULLJOIN或FULLOUTERJOIN。完整外部聯(lián)接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數(shù)據(jù)值。僅當至少有一個同屬于兩表的行符合聯(lián)接條件時,內(nèi)聯(lián)接才返回行。內(nèi)聯(lián)接消除與另一個表中的任何行不匹配的行。而外聯(lián)接會返回FROM子句中提
30、到的至少一個表或視圖的所有行,只要這些行符合任何WHERE或HAVING搜索條件。將檢索通過左向外聯(lián)接引用的左表的所有行,以及通過右向外聯(lián)接引用的右表的所有行。完整外部聯(lián)接中兩個表的所有行都將返回。連接分為三種:內(nèi)連接、外連接、交叉連接2.內(nèi)連接(INNERJOIN):分為三種:等值連接、自然連接、不等連接5.外連接(OUTERJOIN):分為三種:左外連接(LEFTOUTERJOIN或LEFTJOIN)右外連接(RIGHTOUTERJOIN或RIGHTJOIN)全外連接(FULLOUTERJOIN或FULLJOIN)11.12交叉連接(CROSSJOIN):13.沒有WHERE子句,它返回連
31、接表中所有數(shù)據(jù)行的笛卡爾積-使用標準的SQL語法,匹配條件出現(xiàn)在on子句中,搜索條件出現(xiàn)在where子句,這樣使得查詢更容易理解-不太推薦使用等值查詢SQL左外連接,右外連接,全連接,內(nèi)連接連接條件可在FROM或WHERE子句中指定,建議在FROM子句中指定連接條件。WHERE和HAVING子句也可以包含搜索條件,以進一步篩選連接條件所選的行。連接可分為以下幾類:內(nèi)連接。(典型的連接運算,使用像=或之類的比較運算符)。包括相等連接和自然連接。內(nèi)連接使用比較運算符根據(jù)每個表共有的列的值匹配兩個表中的行。例如,檢索students和courses表中學生標識號相同的所有行。外連接。外連接可以是左向
32、外連接、右向外連接或完整外部連接。在FROM子句中指定外連接時,可以由下列幾組關鍵字中的一組指定:LEFTJOIN或LEFTOUTERJOIN。左向外連接的結果集包括LEFTOUTER子句中指定的左表的所有行,而不僅僅是連接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯(lián)的結果集行中右表的所有選擇列表列均為空值。RIGHTJOIN或RIGHTOUTERJOIN。右向外連接是左向外連接的反向連接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。FULLJOIN或FULLOUTERJOIN。完整外部連接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則
33、另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數(shù)據(jù)值。交叉連接。交叉連接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉連接也稱作笛卡爾積。例如,下面的內(nèi)連接檢索與某個出版商居住在相同州和城市的作者:USEpub&selecta-auarne,亂刖name,p.pubnameFROMauthorsASaINNEROpublishersASpONa.cf=p.cityANDa.state-p.&tateORDERBYa.au_lnameASC;a.au_fnameASCFROM子句中的表或視圈可通過內(nèi)連接或完整外部連接按任園殖扌靛旦是,用左或右向外連接指定
34、未或視團時表或視團旳頃序很重爲有關淀用左詬向外連接朋I俵的宦夢信息,請參見便用外連瓠例子:誹idname時idjobpa.rent_id1張312312李因23423王武3344m.id同parent_id存在并系seletta*.bfromainnerjoinbonaid-Dparenl_id結果是1張312312李匹2342左連接selecta*.b*fromaleftjoinioraid=t.parentjdselectat*fromaleft|oinbonaJd=b.parentjd123423山12nJR武弧李+12_3右連接seieda.rcfromarighijoinoona.i
35、(J=Dpsrenija結果是1張32李四null芫全連接selectaT,b.*troiralulljoinb&na.iJ=b.paiemt_id結軀1張?2李四231342334null注意上面FULLjoin的查詢結果SQLcodeDECLARETATABLE(IDAINT,VAVARCHAR(10)DECLARETBTABLE(IDBINT,VBVARCHAR(10)INSERTINTOTASELECTAAUNIONSELECTBCUNIONSELECTCCCINSERTINTOTBSELECT2UNIONSELECT58UNIONSELECT67內(nèi)聯(lián)接簡單寫法SELECTAIDA,A
36、VA,B.IDB,B.VBFROMTAA,TBBWHEREA.IDA=B.IDB-內(nèi)聯(lián)接SELECTA.IDA,A.VA,B.IDB,B.VBFROMTAAINNERJOINTBBONA.IDA=B.IDBSELECTA.IDA,A.VA,B.IDB,B.VBFROMTAAJOINTBBONA.IDA=B.IDB-左外聯(lián)接SELECTA.IDA,A.VA,B.IDB,B.VBFROMTAALEFTJOINTBBONA.IDA=B.IDBSELECTA.IDA,A.VA,B.IDB,B.VBFROMTAALEFTOUTERJOINTBBONA.IDA=B.IDB-右外聯(lián)接SELECTA.IDA,
37、A.VA,B.IDB,B.VBFROMTAARIGHTJOINTBBONA.IDA=B.IDBSELECTA.IDA,A.VA,B.IDB,B.VBFROMTAARIGHTOUTERJOINTBBONA.IDA=B.IDB-完整外聯(lián)接SELECTA.IDA,A.VA,B.IDB,B.VBFROMTAAFULLJOINTBBONA.IDA=B.IDBSELECTA.IDA,A.VA,B.IDB,B.VBFROMTAAFULLOUTERJOINTBBONA.IDA=B.IDB-交叉聯(lián)接SELECTA.IDA,A.VA,B.IDB,B.VBFROMTAACROSSJOINTBB-自聯(lián)接SELECTA
38、.IDA,A.VA,B.IDA,B.VAFROMTAA,TABWHEREA.IDA=B.IDA+1查詢分析器中執(zhí)行:一建表tablel,table2:createtabletable1(idint,namevarchar(10)createtabletable2(idint,scoreint)insertintotablelselectl,leeinsertintotablelselect2,zhanginsertintotablelselect4,wanginsertintotable2selectl,90insertintotable2select2,l00insertintotable2
39、select3,70如表tableltable2idnameidscone1lee1502zhang21DD4wang370以下均在查詢分析器中執(zhí)行一、外連接概念:包括左向外聯(lián)接、右向外聯(lián)接或完整外部聯(lián)接左連接:leftjoin或leftouterjoin(1)左向外聯(lián)接的結果集包括LEFTOUTER子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯(lián)的結果集行中右表的所有選擇列表列均為空值(null)。sql語句select*fromtable1leftjointable2ontable1.id=table2.id結果idnameidscone:1;lee1so2zhang21DD4vwangNULLNULL注釋:包含table1的所有子句,根據(jù)指定條件返回table2相應的字段,不符合的以null顯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- LY/T 2280-2024中國森林認證森林經(jīng)營應用指南
- 蘇科版版數(shù)學七年級上冊聽評課記錄《2-7 有理數(shù)的乘方》第1課時
- 人教部編版八年級道德與法治上冊:8.2《堅持國家利益至上》聽課評課記錄3
- 蘇科版九年級數(shù)學聽評課記錄:第27講 切線性質(zhì)定理的應用
- 用工合同范本(2篇)
- 生態(tài)環(huán)境融資協(xié)議書(2篇)
- 環(huán)境友好化學品研發(fā)合同(2篇)
- 一年級下雪啦聽評課記錄
- 六年級數(shù)學上聽評課記錄
- 人教版數(shù)學八年級下冊《構建知識體系》聽評課記錄2
- 2025年大慶職業(yè)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年中國南方航空股份有限公司招聘筆試參考題庫含答案解析
- 商務部發(fā)布《中國再生資源回收行業(yè)發(fā)展報告(2024)》
- 山東省濟南市2024-2024學年高三上學期1月期末考試 地理 含答案
- 2025年福建新華發(fā)行(集團)限責任公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 【課件】液體的壓強(課件)-2024-2025學年人教版物理八年級下冊
- 實施彈性退休制度暫行辦法解讀課件
- 冷凍食品配送售后服務體系方案
- 江蘇省駕??荚嚳颇恳豢荚囶}庫
- 四川省成都市青羊區(qū)成都市石室聯(lián)合中學2023-2024學年七上期末數(shù)學試題(解析版)
- 2024-2030年中國自動光學檢測儀(AOI)市場競爭格局與前景發(fā)展策略分析報告
評論
0/150
提交評論