记录join、left join、right join、inner join和full join区别
在SQL中,JOIN
(通常等价于INNER JOIN
)、LEFT JOIN
、RIGHT JOIN
、INNER JOIN
和FULL JOIN
是用于表连接的操作符,它们之间的主要区别在于返回结果集的方式不同。以下是这些连接方式的详细解释和区别:
- INNER JOIN(或 JOIN):定义:只返回两个表中连接字段相等的行。用法:当只需要获取两个表中匹配的记录时使用。示例:如果表A和表B在连接键上有共同的行,则只返回这些匹配的行。
- LEFT JOIN:定义:返回左表中的所有行,以及右表中连接字段相等的行。如果右表中没有匹配的行,则返回NULL。用法:当需要从左表中获取所有记录,同时如果右表中存在匹配记录时也获取这些记录时使用。示例:如果表A左连接表B,则返回A的所有行,对于表A中有匹配的行,表B中的相应行也会出现在结果中;对于表A中没有匹配的行,表B中的列将显示为NULL。
- RIGHT JOIN:定义:返回右表中的所有行,以及左表中连接字段相等的行。如果左表中没有匹配的行,则返回NULL。用法:当需要从右表中获取所有记录,同时如果左表中存在匹配记录时也获取这些记录时使用。示例:如果表A右连接表B,则返回B的所有行,对于表B中有匹配的行,表A中的相应行也会出现在结果中;对于表B中没有匹配的行,表A中的列将显示为NULL。
- FULL JOIN:定义:返回左表和右表中所有的行,不管连接字段是否相等。如果某行在另一个表中没有匹配的行,则另一个表的选择列表列包含NULL。用法:当需要获取左表和右表中所有记录,无论它们是否匹配时使用。示例:如果表A全连接表B,则返回A和B的所有行。对于匹配的行,显示两个表中的数据;对于不匹配的行,在另一个表的列中显示NULL。
- JOIN(无特定修饰符时):在大多数SQL数据库系统中,JOIN默认等价于INNER JOIN。因此,它只返回两个表中匹配的记录。
总结:
INNER JOIN
(或JOIN
)只返回匹配的记录。LEFT JOIN
返回左表中的所有记录,以及匹配的右表记录;如果右表中没有匹配,则显示NULL。RIGHT JOIN
返回右表中的所有记录,以及匹配的左表记录;如果左表中没有匹配,则显示NULL。FULL JOIN
返回两个表中所有的记录,无论它们是否匹配;不匹配的记录将在另一个表的列中显示为NULL。
SQL练练练 文章被收录于专栏
记录自己sql的每一步提升!