最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

內(nèi)連接、左外連接、右外連接、交叉連接它們的區(qū)別是什么

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 08:55:06
文檔

內(nèi)連接、左外連接、右外連接、交叉連接它們的區(qū)別是什么

內(nèi)連接、左外連接、右外連接、交叉連接它們的區(qū)別是什么:內(nèi)連接、左外連接、右外連接、交叉連接區(qū)別在之前,我對MSSQL中的內(nèi)連接和外連接所得出的數(shù)據(jù)集不是很清楚。這幾天重新溫習(xí)了一下SQL的書本,現(xiàn)在的思路應(yīng)該是很清楚了,現(xiàn)在把自己的理解發(fā)出來給大家溫習(xí)下。希望和我一樣對SQL的連接語句不太理解的朋友能夠
推薦度:
導(dǎo)讀內(nèi)連接、左外連接、右外連接、交叉連接它們的區(qū)別是什么:內(nèi)連接、左外連接、右外連接、交叉連接區(qū)別在之前,我對MSSQL中的內(nèi)連接和外連接所得出的數(shù)據(jù)集不是很清楚。這幾天重新溫習(xí)了一下SQL的書本,現(xiàn)在的思路應(yīng)該是很清楚了,現(xiàn)在把自己的理解發(fā)出來給大家溫習(xí)下。希望和我一樣對SQL的連接語句不太理解的朋友能夠

內(nèi)連接、左外連接、右外連接、交叉連接區(qū)別

在之前,我對MSSQL中的內(nèi)連接和外連接所得出的數(shù)據(jù)集不是很清楚。這幾天重新溫習(xí)了一下SQL的書本,現(xiàn)在的思路應(yīng)該是很清楚了,現(xiàn)在把自己的理解發(fā)出來給大家溫習(xí)下。希望和我一樣對SQL的連接語句不太理解的朋友能夠有所幫助。(發(fā)這么菜的教程,各位大大們別笑話偶了,呵:D ) 有兩個(gè)表A和表B。表A結(jié)構(gòu)如下: Aid:int;標(biāo)識(shí)種子,主鍵,自增ID Aname:varchar 數(shù)據(jù)情況,即用select * from A出來的記錄情況如下圖1所示:


圖1:A表數(shù)據(jù)
表B結(jié)構(gòu)如下: Bid:int;標(biāo)識(shí)種子,主鍵,自增ID Bnameid:int 數(shù)據(jù)情況,即用select * from B出來的記錄情況如下圖2所示:


圖2:B表數(shù)據(jù)
為了把Bid和Aid加以區(qū)分,不讓大家有誤解,所以把Bid的起始種子設(shè)置為100。有SQL基本知識(shí)的人都知道,兩個(gè)表要做連接,就必須有個(gè)連接字段,從上表中的數(shù)據(jù)可以看出,在A表中的Aid和B表中的Bnameid就是兩個(gè)連接字段。下圖3說明了連接的所有記錄集之間的關(guān)系:
圖3:連接關(guān)系圖
現(xiàn)在我們對內(nèi)連接和外連接一一講解。 1.內(nèi)連接:利用內(nèi)連接可獲取兩表的公共部分的記錄,即圖3的記錄集C 語句如下:Select * from A JOIN B ON A.Aid=B.Bnameid 運(yùn)行結(jié)果如下圖4所示:其實(shí)select * from A,B where A.Aid=B.Bnameid與Select * from A JOIN B ON A.Aid=B.Bnameid的運(yùn)行結(jié)果是一樣的。

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

2.外連接:外連接分為兩種,一種是左連接(Left JOIN)和右連接(Right JOIN)
(1)左連接(Left JOIN):即圖3公共部分記錄集C+表A記錄集A1。
語句如下:select * from A Left JOIN B ON A.Aid=B.Bnameid
運(yùn)行結(jié)果如下圖5所示:


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

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

(2)右連接(Right JOIN):即圖3公共部分記錄集C+表B記錄集B1。

語句如下:select * from A Right JOIN B ON A.Aid=B.Bnameid 運(yùn)行結(jié)果如下圖6所示:


圖6:右連接數(shù)據(jù)
說明: 在語句中,A在B的左邊,并且是Right Join,所以其運(yùn)算方式為:A右連接B的記錄=圖3公共部分記錄集C+表B記錄集B1
在圖3中即記錄集C中的存在的Aid為:2 3 6 7 8
圖2中即表B所有記錄集B中存在的Bnameid為:2 3 6 7 8 11
表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。
交叉連接:兩張表聯(lián)合沒有條件情況下,條數(shù) = 圖1 * 圖2

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

內(nèi)連接、左外連接、右外連接、交叉連接它們的區(qū)別是什么

內(nèi)連接、左外連接、右外連接、交叉連接它們的區(qū)別是什么:內(nèi)連接、左外連接、右外連接、交叉連接區(qū)別在之前,我對MSSQL中的內(nèi)連接和外連接所得出的數(shù)據(jù)集不是很清楚。這幾天重新溫習(xí)了一下SQL的書本,現(xiàn)在的思路應(yīng)該是很清楚了,現(xiàn)在把自己的理解發(fā)出來給大家溫習(xí)下。希望和我一樣對SQL的連接語句不太理解的朋友能夠
推薦度:
標(biāo)簽: 連接 區(qū)別 交叉
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top