人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

MSSQL內(nèi)外連接(INNER JOIN)語句詳解

發(fā)布日期:2022-02-04 17:28 | 文章來源:CSDN

在之前,我對MSSQL中的內(nèi)連接和外連接所得出的數(shù)據(jù)集不是很清楚。這幾天重新溫習(xí)了一下SQL的書本,現(xiàn)在的思路應(yīng)該是很清楚了,現(xiàn)在把自己的理解發(fā)出來給大家溫習(xí)下。希望和我一樣對SQL的連接語句不太理解的朋友能夠有所幫助。(發(fā)這么菜的教程,各位大大們別笑話偶了,呵:D)

有兩個表A和表B。
表A結(jié)構(gòu)如下:
Aid:int;標(biāo)識種子,主鍵,自增ID
Aname:varchar

數(shù)據(jù)情況,即用select*fromA出來的記錄情況如下圖1所示:


圖1:A表數(shù)據(jù)

表B結(jié)構(gòu)如下:

Bid:int;標(biāo)識種子,主鍵,自增ID
Bnameid:int

數(shù)據(jù)情況,即用select*fromB出來的記錄情況如下圖2所示:

圖2:B表數(shù)據(jù)

為了把Bid和Aid加以區(qū)分,不讓大家有誤解,所以把Bid的起始種子設(shè)置為100。
有SQL基本知識的人都知道,兩個表要做連接,就必須有個連接字段,從上表中的數(shù)據(jù)可以看出,在A表中的Aid和B表中的Bnameid就是兩個連接字段。

下圖3說明了連接的所有記錄集之間的關(guān)系:




圖3:連接關(guān)系圖

現(xiàn)在我們對內(nèi)連接和外連接一一講解。

1.內(nèi)連接:利用內(nèi)連接可獲取兩表的公共部分的記錄,即圖3的記錄集C
語句如下:Select*fromAJOINBONA.Aid=B.Bnameid
運行結(jié)果如下圖4所示:

圖4:內(nèi)連接數(shù)據(jù)

其實select*fromA,BwhereA.Aid=B.Bnameid與Select*fromAJOINBONA.Aid=B.Bnameid的運行結(jié)果是一樣的。
2.外連接:外連接分為兩種,一種是左連接(LeftJOIN)和右連接(RightJOIN)

(1)左連接(LeftJOIN):即圖3公共部分記錄集C+表A記錄集A1。
語句如下:select*fromALeftJOINBONA.Aid=B.Bnameid
運行結(jié)果如下圖5所示:

圖5:左連接數(shù)據(jù)

說明:

在語句中,A在B的左邊,并且是LeftJoin,所以其運算方式為:A左連接B的記錄=圖3公共部分記錄集C+表A記錄集A1
在圖3中即記錄集C中的存在的Aid為:23678
圖1中即表A所有記錄集A中存在的Aid為:123456789
表A記錄集A1中存在的Aid=(圖1中即A表中所有Aid)-(圖3中即記錄集C中存在的Aid),最終得出為:1459
由此得出圖5中A左連接B的記錄=圖3公共部分記錄集C+表A記錄集A1,
最終得出的結(jié)果圖5中可以看出Bnameid及Bid非NULL的記錄都為圖3公共部分記錄集C中的記錄;Bnameid及Bid為NULL的Aid為1459的四筆記錄就是表A記錄集A1中存在的Aid。

(2)右連接(RightJOIN):即圖3公共部分記錄集C+表B記錄集B1。
語句如下:select*fromARightJOINBONA.Aid=B.Bnameid
運行結(jié)果如下圖6所示:

圖6:右連接數(shù)據(jù)

說明:
在語句中,A在B的左邊,并且是RightJoin,所以其運算方式為:A右連接B的記錄=圖3公共部分記錄集C+表B記錄集B1
在圖3中即記錄集C中的存在的Aid為:23678
圖2中即表B所有記錄集B中存在的Bnameid為:2367811
表B記錄集B1中存在的Bnameid=(圖2中即B表中所有Bnameid)-(圖3中即記錄集C中存在的Aid),最終得出為:11
由此得出圖6中A右連接B的記錄=圖3公共部分記錄集C+表B記錄集B1,
最終得出的結(jié)果圖6中可以看出Aid及Aname非NULL的記錄都為圖3公共部分記錄集C中的記錄;Aid及Aname為NULL的Aid為11的記錄就是表B記錄集B1中存在的Bnameid。

總結(jié):

通過上面的運算解說,相信很多人已經(jīng)想到,上面的情況(包括圖3的關(guān)系圖)說明的都只是A在B的左邊的情況,
以下語句B在A的右邊的又會出現(xiàn)什么情況呢??
select*fromBLeftJOINAONA.Aid=B.Bnameid
select*fromBRightJOINAONA.Aid=B.Bnameid

其實對圖3左右翻轉(zhuǎn)一下就可以得出以下結(jié)論:
select*fromBLeftJOINAONA.Aid=B.Bnameid和select*fromARightJOINBONA.Aid=B.Bnameid所得出的記錄集是一樣的

select*fromBRightJOINAONA.Aid=B.Bnameid和select*fromALeftJOINBONA.Aid=B.Bnameid所得出的記錄集也是一樣的。

第一次寫類似教程的貼子,希望和我一樣對SQL的連接語句不太理解的朋友能夠有所幫助。謝謝大家支持。

國外穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部