關於sql連線查詢(內聯 左聯 右聯 全聯)

2021-08-28 03:56:38 字數 1495 閱讀 4052

內連線(inner join)(典型的連線運算,使用像   =   或   <>   之類的比較運算子)。包括相等連線和自然連線。 內連線使用比較運算子根據每個表共有的列的值匹配兩個表中的行 

左連線(left   join   或   left   outer   join)是右左邊表中的資料為基準,若左表有資料右表沒有資料,否則顯示左表中的資料右表中的資料顯示為空 

右連線(right  join  或  right   outer   join)是以右邊表中的資料為基準,若右表有資料左表沒有資料,否則顯示右表中的資料左表中的資料顯示為空 

全連線( full   join   或   full   outer   join)   完整外部連線返回左表和右表中的所有行。當某行在另乙個表中沒有匹配行時,則另乙個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。 

下面用幾個例項來詳細說明 

兩個表: 

a(id,name) 

資料:(1,張三)(2,李四)(3,王五) 

b(id,name) 

資料:(1,學生)(2,老師)(4,校長) 

內連線結果: 

select a.*,b.* from a inner join b on a.id=b.id;

1 張三 1    學生 

2 李四 2    老師 

左連線結果: 

select a.*,b.* from a left join b on a.id=b.id;

1 張三 1    學生 

2 李四 2    老師 

3 王五 null null 

右連線結果: 

select a.*,b.* from a right join b on a.id=b.id;

1    張三 1 學生 

2    李四 2 老師 

null null 4 校長 

全連線結果 

select a.*,b.* from a full join b on a.id=b.id;

1 張三 1    學生 

2 李四 2    老師 

3 王五 null null 

null null 4 校長 

**************** 

補充:下面這種情況就會用到外連線 

比如有兩個表乙個是使用者表,乙個是交易記錄表,如果我要查詢每個使用者的交易記錄就要用到左外外連線,因為不是每個使用者都有交易記錄。 

用到左外連線後,有交易記錄的資訊就會顯示,沒有的就顯示null,就像上面我舉得例子一樣。 

如果不用外連線的話,比如【王五】沒有交易記錄的話,那麼使用者表裡的【王五】的資訊就不會顯示,就失去了查詢所有使用者交易記錄的意義了。 

**************** 

看一下結果就能明白各種連線的區別了。

關於sql連線查詢(內聯 左聯 右聯 全聯)

內連線 inner join 典型的連線運算,使用像 或 之類的比較運算子 包括相等連線和自然連線。內連線使用比較運算子根據每個表共有的列的值匹配兩個表中的行 左連線 left join 或 left outer join 是右左邊表中的資料為基準,若左表有資料右表沒有資料,否則顯示左表中的資料右表...

sql 左聯 右聯 內聯的區別

如有表 a col1,col2 a,1b,1 b col1,col2 a,3c,2 內部聯接是指只返回符合聯接條件的資料,如select from a join b on a.col1 b.col1 只返回符合條件a.col1 b.col1的資料 結果如下 a,1,a,3 左外聯接不僅返回符合條件的...

SQL聯合查詢(內聯 左聯 右聯 全聯)的語法

概述 聯合查詢效率較高,舉例子來說明聯合查詢 內聯inner join 左聯left outer join 右聯right outer join 全聯full outer join 的好處及用法。聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 ...