1. 程式人生 > >SQL內連結,外連線,交叉連線,聯合連線區別詳解

SQL內連結,外連線,交叉連線,聯合連線區別詳解

一、準備工作:

建立資料表並填寫資訊
class表
這裡寫圖片描述
student表
這裡寫圖片描述

二、詳解

1、內連結

INNER JOIN 用於取得兩個表中存在連線匹配關係的記錄(例如:某一列相等)。通常配合比較運算子(=或<>)一起使用。其中通過某個欄位使用=運算子連線兩個表的連結 也叫做 等值連線
如下:

select * from class c inner join student s on s.class_id=c.id;

這裡寫圖片描述

補充:
(1)、where 連線多個表也屬於內連線,在資料庫中被稱為隱性內連結。inner join被稱為顯性內連線。

select
* from class c,student s where s.class_id=c.id;

上面的where語句輸出結果和inner join一樣。

(2)、自然連線是一種特殊的等值連線,資料庫內部會將兩個表通過共有的欄位等值連線並且去掉兩個表重複的欄位。

(3)、笛卡爾積是兩個表每一個欄位相互匹配,去掉where 或者 inner join的等值 得出的結果就是笛卡爾積。笛卡爾積也等同於交叉連線

2、外連線

外連線分為左外連線、右外連線、全外連結三種。
左外連線
包括左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。

select * from student s left join class c on s.class_id=c.id;

這裡寫圖片描述

右外連線
包括右表的所有行,而不僅僅是聯接列所匹配的行。如果右表的某行在左表中沒有匹配行,則在相關聯的結果集行中左表的所有選擇列表列均為空值。

全外連結
左外連線和右外連線的並集。

3、聯合連結

union取左右表的並集。

select * from student where class_id=1 union select * from student where class_id=2;

這裡寫圖片描述