泉缘泉 发表于 4 天前

JOIN 和 OUTER JOIN,SQL中常见的连接方式

1. INNER JOIN(简称 JOIN)

INNER JOIN 是 SQL 中最常用的一种连接方式,默认的 JOIN 就是 INNER JOIN。它返回两个表中满足连接条件的匹配记录。


[*]作用:返回两个表中全部满足 ON 条件的记录。
[*]特性:假如表中的某些行在连接条件下没有匹配的行,那么这些行将不会出现在效果会合。
例子:
SELECT * FROM TableA JOIN TableB ON TableA.ID = TableB.ID; 这将只返回 TableA 和 TableB 中 ID 字段匹配的记录。
2. OUTER JOIN

OUTER JOIN 分为三种范例:LEFT OUTER JOIN、RIGHT OUTER JOIN 和 FULL OUTER JOIN,它们的主要特点是即使某些行在连接条件下没有匹配的行,仍然会出现在效果集里。


[*] LEFT OUTER JOIN(左外连接):返回左表(即 JOIN 中左边的表)中的全部记录,即使右表中没有匹配的行。假如右表没有匹配的行,右表的列会显示 NULL。
[*] RIGHT OUTER JOIN(右外连接):返回右表(即 JOIN 中右边的表)中的全部记录,即使左表中没有匹配的行。假如左表没有匹配的行,左表的列会显示 NULL。
[*] FULL OUTER JOIN(全外连接):返回两个表中的全部记录。假如左表没有匹配的行,左表的列会显示 NULL;假如右表没有匹配的行,右表的列会显示 NULL。
2.1 LEFT OUTER JOIN (左外连接)

LEFT OUTER JOIN 返回左表的全部记录以及右表中与之匹配的记录。假如右表中没有匹配的记录,则效果中相应的右表列会显示为 NULL。
例子:
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.ID = TableB.ID; 这将返回 TableA 中的全部记录,即使 TableB 中没有匹配的记录。假如 TableB 中没有与 TableA 中的某条记录匹配的行,TableB 中的字段将显示为 NULL。
2.2 RIGHT OUTER JOIN (右外连接)

RIGHT OUTER JOIN 返回右表的全部记录以及左表中与之匹配的记录。假如左表中没有匹配的记录,则效果中相应的左表列会显示为 NULL。
例子:
SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.ID = TableB.ID; 这将返回 TableB 中的全部记录,即使 TableA 中没有匹配的记录。假如 TableA 中没有与 TableB 中的某条记录匹配的行,TableA 中的字段将显示为 NULL。
2.3 FULL OUTER JOIN (全外连接)

FULL OUTER JOIN 返回左表和右表的全部记录。假如某一表中没有匹配的记录,则对应的字段将显示为 NULL。
例子:
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.ID = TableB.ID; 这将返回 TableA 和 TableB 中的全部记录。假如某一表中的记录没有匹配,另一个表的列将显示为 NULL。
3. 总结对比:

连接范例返回记录阐明INNER JOIN只有满足连接条件的匹配记录只有在两个表中都有匹配的记录才会被返回。LEFT JOIN返回左表的全部记录,右表的匹配记录左表的全部记录都返回,右表没有匹配的会显示 NULL。RIGHT JOIN返回右表的全部记录,左表的匹配记录右表的全部记录都返回,左表没有匹配的会显示 NULL。FULL JOIN返回左右表的全部记录,左表和右表的匹配记录左右表全部记录都返回,没匹配的字段会显示 NULL。 4. 利用场景



[*]INNER JOIN:当你只关心两张表中有匹配记录的环境时,利用 INNER JOIN。
[*]LEFT JOIN:当你必要保留左表的全部记录,并且想知道左表记录是否在右表中有匹配时,利用 LEFT JOIN。
[*]RIGHT JOIN:当你必要保留右表的全部记录,并且想知道右表记录是否在左表中有匹配时,利用 RIGHT JOIN。
[*]FULL JOIN:当你必要保留两张表的全部记录时,利用 FULL JOIN,即使它们没有匹配的记录。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: JOIN 和 OUTER JOIN,SQL中常见的连接方式