內連線與外連線(左右)的區別

2021-08-17 02:41:15 字數 1736 閱讀 2286

資料庫:

內連線與外連線:

內連線是獲取兩個表的公共部分c,(其中乙個表的id是另外乙個表的連線字段)

select * from a,b where a.aid=b.bnameid與select * from a join b on a.aid=b.bnameid

的執行結果是一樣的。

外連線:分為左連線和右連線

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

select * from a left join b on a.aid=b.bnameid

右連線(right join):即圖3公共部分記錄集c+表b記錄集b1。

select * from a right join b on a.aid=b.bnameid

通過上面的運算解說,相信很多人已經想到,上面的情況(包括圖3的關係圖)說明的都只是a在b的左邊的情況,

以下語句b在a的右邊的又會出現什麼情況呢??

select * from b left join a on a.aid=b.bnameid

select * from b right join a on a.aid=b.bnameid

其實對圖3左右翻轉一下就可以得出以下結論:

select * from b left join a on a.aid=b.bnameid和select * from a right join b on a.aid=b.bnameid所得出的記錄集是一樣的

而select * from b right join a on a.aid=b.bnameid和select * from a left join b on a.aid=b.bnameid所得出的記錄集也是一樣的。

--表stu

id  name   

1,  jack

2,  tom

3,  kity

4,  nono

--表exam

id   grade

1,   56

2,   76

11,  89

內連線 (顯示兩表id匹配的)

select stu.id,exam.id,stu.name, exam.grade from stu inner join exam on stu.id=exam.id

stu.id   exam.id  name     grade

--------------------------------

1 1 jack 56

2 2 tom 76

左連線(顯示join 左邊的表的所有資料,exam只有兩條記錄,所以stu.id,grade 都用null 顯示)

select stu.id,exam.id,stu.name, exam.grade from stu left join exam on stu.id=exam.id

1 1 jack 56

2 2 tom 76

3 null kity null

4 null nono null

右連線(與作連線相反,顯示join右邊表的所有資料)

select stu.id,exam.id,stu.name, exam.grade from stu right join exam on stu.id=exam.id

1 1 jack 56

2 2 tom 76

null 11 null 89

內連線與外連線的區別

在之前,我對mssql中的內連線和外連線所得出的資料集不是很清楚。這幾天重新溫習了一下sql的書本,現在的思路應該是很清楚了,現在把自己的理解發出來給大家溫習下。希望和我一樣對sql的連線語句不太理解的朋友能夠有所幫助。發這麼菜的教程,各位大大們別笑話偶了,呵 d 有兩個表a和表b。表a結構如下 a...

內連線與外連線的區別

1.內連線 自然連線 只有兩張表相匹配的行才能出現在結果集 2.外連線 2.1 左外連線 左邊為主表,左邊的表顯示全部 右邊為副表,右邊無符號資料時顯示null,不符合的不顯示 2.2 右外連線 右邊為主表,右邊的表顯示全部 左邊為副表,左邊無符號資料時顯示null,不符合的不顯示 2.3 全外連線...

MySQL 外連線 內連線與 連線的區別

內連線 連線的資料表相對應的匹配字段完全相等的連線。連線關鍵字是 inner join 外連線分為左外連線與右外連線 全連線。左連線的結果集包括指定的左表全部資料與匹配的右表資料,右表中沒匹配的全為空值.關鍵字 left join 右連線的結果集包含指定的右表全部資料與匹配的左邊資料,左邊中沒匹配的...