資料庫:
內連線與外連線:
內連線是獲取兩個表的公共部分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 右連線的結果集包含指定的右表全部資料與匹配的左邊資料,左邊中沒匹配的...