1.測試環境說明
(1)mysql:mysql-5.5.53-winx64;
(2)可視化操作工具:Navicat_V11.0.10_XiTongZhiJia;
2.建表
數據表有三user ,jme,sms
表1_user
表2_jme
表3_sms
3.測試
(1)自連接,顧名思義,自己和自己多次連接,最終得到自己需要的列。(不做過多討論)
(2)left join 或者left outer join
select * from user a left outer join sms b on a.id = b.id
select * from user a left join sms b on a.id = b.id
(3)right join 或者rigth outer join
select * from user a right outer join sms b on a.id = b.id
select * from user a right join sms b on a.id = b.id
(4)full outer join或者full join
注意:mysql不支持這種連接的寫法!!
練習:select * from user,jme,sms
結果:從左往右一行一行的依次連接
(5)交叉連接 cross join
select * from user a cross join jme b 笛卡爾積
4.概念
(1)內連接——最常用 (INNER JOIN )
定義:僅將兩個表中滿足連接條件的行組合起來作為結果集。
(2)外連接
左(外)連接
定義:在內連接的基礎上,還包含左表中所有不符合條件的數據行,並在其中的右表列填寫NULL
關鍵字:LEFT JOIN
右(外)連接
定義:在內連接的基礎上,還包含右表中所有不符合條件的數據行,並在其中的左表列填寫NULL
關鍵字:RIGHT JOIN
(3)完全連接
定義:在內連接的基礎上,還包含兩個表中所有不符合條件的數據行,並在其中的左表、和右表列填寫NULL
關鍵字:FULL JOIN
(4)交叉連接
定義:將兩個表的所有行進行組合,連接后的行數為兩個表的乘積數。(笛卡爾積)
關鍵詞:CROSS JOIN
注意:完全連接和交叉連接的區別。主要體現在空行,交叉連接沒有條件限制。