連線的優勢是減少了外來鍵的使用。
內連線:最常見的等值連線,指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。
inner join或join on condition
//首先建立兩個表person和card,內容如下
select * from card;
+------+----------+
| id | cardname |
+------+----------+
| 1 | cardyi |
| 2 | carder |
| 3 | cardsan |
| 4 | cardsi |
| 5 | cardwu |
| 6 | cardliu |
+------+----------+
select * from person;
+------+------+--------+
| id | name | cardid |
+------+------+--------+
| 1 | pyi | 1 |
| 1 | pyi | 2 |
| 1 | pyi | 4 |
| 1 | pyi | 7 |
| 2 | per | 6 |
+------+------+--------+
內連線示意:
select * from person inner join card on person.cardid=card.id;//需要兩個表都滿足連線條件。
+------+------+--------+------+----------+
| id | name | cardid | id | cardname |
+------+------+--------+------+----------+
| 1 | pyi | 1 | 1 | cardyi |
| 1 | pyi | 2 | 2 | carder |
| 1 | pyi | 4 | 4 | cardsi |
| 2 | per | 6 | 6 | cardliu |
+------+------+--------+------+----------+
外連線:包含左外連線、右外連線和全外連線
左外連線:left join on或者left outer join on
select * from person left join card on person.cardid =card.id;
+------+------+--------+------+----------+
| id | name | cardid | id | cardname |
+------+------+--------+------+----------+
| 1 | pyi | 1 | 1 | cardyi |
| 1 | pyi | 2 | 2 | carder |
| 1 | pyi | 4 | 4 | cardsi |
| 2 | per | 6 | 6 | cardliu |
| 1 | pyi | 7 | null | null |
+------+------+--------+------+----------+
左邊的全顯示,右邊有相等就顯示,沒有就顯示null
右外連線:right join或者right outer join
select * from person right join card on person.cardid=card.id;
+------+------+--------+------+----------+
| id | name | cardid | id | cardname |
+------+------+--------+------+----------+
| 1 | pyi | 1 | 1 | cardyi |
| 1 | pyi | 2 | 2 | carder |
| 1 | pyi | 4 | 4 | cardsi |
| 2 | per | 6 | 6 | cardliu |
| null | null | null | 3 | cardsan |
| null | null | null | 5 | cardwu |
+------+------+--------+------+----------+
右邊有的全顯示,左邊有的顯示,左邊沒有的顯示null。左邊有,右邊沒有的不顯示。
全外連線:full join
mysql本身不支援full join
如果要實現full join,就把左連線的實現和右連線的實現進行union
select * from person left join card on person.cardid=card.id
union
select * from person right join card on person.cardid=card.id;
+------+------+--------+------+----------+
| id | name | cardid | id | cardname |
+------+------+--------+------+----------+
| 1 | pyi | 1 | 1 | cardyi |
| 1 | pyi | 2 | 2 | carder |
| 1 | pyi | 4 | 4 | cardsi |
| 2 | per | 6 | 6 | cardliu |
| 1 | pyi | 7 | null | null |
| null | null | null | 3 | cardsan |
| null | null | null | 5 | cardwu |
+------+------+--------+--。----+----------+
左邊的全顯示,右邊的全顯示,左邊有,右邊沒有,右邊為null;右邊有,左邊沒有,左邊為null 連表查詢(內連線,左外連線,右外連線)
用兩個表 a table b table 關聯欄位a table.a id和b table.b id來演示一下mysql的內連線 外連線 左 外 連線 右 外 連線 全 外 連線 mysql版本 server version 5.6.31 mysql community server gpl 資料庫...
SQL 內連線,外連線(左外連線 右外連線)
參考整理筆記 關鍵字 inner join on 語句 select from a table a inner join b table bon a.a id b.b id 執行結果 說明 組合兩個表中的記錄,返回關聯字段相符的記錄,也就是返回兩個表的交集 陰影 部分。關鍵字 left join o...
Oracle外連線,左外連線,右外連線,內連線簡析
內連線即普通等值連線 select e.ename,e.job,e.sal,d.dname from emp e inner join dept d on e.deptno d.deptno where e.sal 2000 select e.ename e.job,e.sal d.dname fr...