內連線(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,就像上面我舉得例子一樣。
如果不用外連線的話,比如【王五】沒有交易記錄的話,那麼使用者表裡的【王五】的資訊就不會顯示,就失去了查詢所有使用者交易記錄的意義了。
****************
看一下結果就能明白各種連線的區別了。
mysql 內連線 左連線 右連線
記錄備忘下,初始資料如下 drop table ifexists t demo product create table ifnot exists t demo product proid int 20 proname varchar 20 price int 10 primary key proi...
mysql 內連線,左連線,右連線
本文 於 用兩個表 a table b table 關聯欄位a table.a id和b table.b id來演示一下mysql的內連線 外連線 左 外 連線 右 外 連線 全 外 連線 mysql版本 server version 5.6.31 mysql community server gp...
Mysql內連線 左連線 右連線查詢
建表語句如下 建立表a table table structure for a table drop table if exists a table create table a table id smallint 6 auto increment,name varchar 10 not null,...