内连接
内连接返回两个表中所有满足连接条件的行。只有当两个表中的某行在连接条件上匹配时,结果集才包含这些行。
示例:
SELECT A.*, B.*
FROM TableA A
INNER JOIN TableB B
ON A.id = B.id;
在上述查询中,只有当 表 A 和 表 B 的 id 字段相等时,才会返回相应的行。如果在 表 A 或 表 B 中没有匹配的 id,那么这些行将不会出现在结果集中。
外连接
外连接分为三种:左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL JOIN)。
左外连接
左外连接返回左表中的所有行以及右表中满足连接条件的行。如果右表中没有匹配的行,结果集中右表的字段会包含NULL。
右外连接
右外连接与左外连接类似,只不过它返回右表中的所有行以及左表中满足连接条件的行。如果左表中没有匹配的行,结果集中左表的字段会包含NULL。
全外连接
全外连接返回两个表中的所有行,无论是否满足连接条件。未匹配的行在结果集中对应表的字段会显示为NULL。(MYSQL中没有全外连接)
总结
- 内连接:只返回两个表中满足连接条件的行。
- 左外连接:返回左表中的所有行以及右表中满足连接条件的行,右表无匹配行时字段显示为NULL。
- 右外连接:返回右表中的所有行以及左表中满足连接条件的行,左表无匹配行时字段显示为NULL。
- 全外连接:返回两个表中的所有行,无论是否满足连接条件,未匹配行字段显示为NULL。