連接:直白的說就是各種join,就是依據一張表的關係來更新另一張表。

連接種類:

1、內連接:在MySQL中JOIN,INNER JOIN,CROSS JOIN是等價的
2、外連接:LEFT JOIN左外連接;RIGHT JOIN右外連接
3、連接條件:使用ON設定連接條件,也可以用WHERE代替
· ON:通常使用它設定連接條件
· WHERE:進行結果集記錄的過濾
4、內連接是返回左表及右表符合連接條件的記錄(符合連接條件的紀錄)
左外連接:顯示左表全部和右表符合連接條件的記錄;【left join】
右外連接:顯示右表全部記錄和左表符合連接條件的記錄。【right join】
5、多連接:
多表的連接跟兩張表的連接一樣,表的連接實質就是外鍵的逆向約束。
理解為:很多數據通過外鍵來存儲,然後又用外鍵把數據連接在一起,這就是外鍵的逆向約束。

舉例:

內連接:INNER JOIN 求公共部分
SELECT * FROM TABLE_A A
INNER JOIN TABLE_B B ON A.KEY=B.KEY

左連接:LEFT JOIN 左邊全部和右邊符合記錄的
SELECT * FROM TABLE_A A
LEFT JOIN TABLE_B B ON A.KEY=B.KEY

右連接:RIGHT JOIN 右邊全部和左邊符合記錄的
SELECT * FROM TABLE_A A
RIGHT JOIN TABLE_B B ON A.KEY=B.KEY

左連接變形:左邊獨有的部分
SELECT * FROM TABLE_A A
FROM TABLE_B B
LEFT JOIN ON A.KEY = B.KEY
WHERE B.KEY IS NULL

右連接變形:右邊獨有的部分
SELECT * FROM TABLE_A A
FROM TABLE_B B
RIGHT JOIN ON A.KEY = B.KEY
WHERE A.KEY IS NULL

內連接變形:除了公有各自的部分。
SELECT
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL

有些mysql不支持 FULL OUTER JOIN
左外連接變形和右外連接變形數據的集合。
結果也是一樣的。【union all】

總結:

連接的原理是,先進行笛卡爾積在進行條件判斷。相對於子查詢稍微慢點。

推薦閱讀:

相关文章