表間的內連線 外連線 交叉連線

2021-08-09 13:03:20 字數 2068 閱讀 5119

有兩個表a和表b。表a結構如下: aid:int;標識種子,主鍵,自增id aname:varchar 資料情況,即用select * from a出來的記錄情況如下圖1所示:

表b結構如下: bid:int;標識種子,主鍵,自增id bnameid:int 資料情況,即用select * from b出來的記錄情況如下圖2所示:

為了把bid和aid加以區分,不讓大家有誤解,所以把bid的起始種子設定為100。有sql基本知識的人都知道,兩個表要做連線,就必須有個連線字段,從上表中的資料可以看出,在a表中的aid和b表中的bnameid就是兩個連線字段。下圖3說明了連線的所有記錄集之間的關係:

現在我們對內連線和外連線一一講解。

1.內連線:利用內連線可獲取兩表的公共部分的記錄,即圖3的記錄集c 語句如下:select * from a join b on a.aid=b.bnameid 執行結果如下圖4所示:其實select * from a,b where a.aid=b.bnameid與select * from a join b on a.aid=b.bnameid的執行結果是一樣的。

2.外連線:外連線分為兩種,一種是左連線(left join)和右連線(right join)

(1)左連線(left join):即圖3公共部分記錄集c+表a記錄集a1。

語句如下:select * from a left join b on a.aid=b.bnameid 

執行結果如下圖5所示:

說明:在語句中,a在b的左邊,並且是left join,所以其運算方式為: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, 最終得出的結果圖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   執行結果如下圖6所示:

說明: 在語句中,a在b的左邊,並且是right join,所以其運算方式為: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, 最終得出的結果圖6中可以看出aid及aname非null的記錄都為圖3公共部分記錄集c中的記錄;aid及aname為null的aid為11的記錄就是表b記錄集b1中存在的bnameid。    

交叉連線

:兩張表聯合沒有條件情況下,條數 = 圖1 * 圖2

內連線 外連線 交叉連線

一 連線查詢 根據兩個表或者多個表的列之間的關係,從這些表中查詢資料。目的 實現多個表查詢操作。二 連線型別 連線分為三種 內連線 外連線 交叉連線。1 內連線 使用比較運算子 包括 和 進行表間的比較操作,查詢與連線條件相匹配的資料。根據比較運算子不同,內連線分為等值連線和不等連線兩種。1.1 等...

內連線 外連線 交叉連線總結

本篇文章總結了一下sql中的五種連線 內連線 左外連線 右外連線 全連線 交叉連線 一 內連線 full join full outer join 內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的列值。內連線分三種 1 等值連線 在連線條件中使用等於號 運算子比較被連線列的列...

SQL Server內連線 外連線 交叉連線

在資料庫查詢中,我們常常會用到的表連線查詢,而我自己在工作中也是時常用這些表連線查詢。而就在剛剛我卻還沒有搞清楚資料庫表連線到底有哪幾種,這幾種表連線查詢方式又有什麼區別,實屬慚愧!藉以此文以謹記。資料庫表連線查詢分三種 內連線 外連線 交叉連線 那下面我們就來分別說說這三種連線。內連線又分為 等值...