面试题:MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别是什么?

在 MySQL 中,INNER JOINLEFT JOIN 和 RIGHT JOIN 是用于连接多个表的常见操作,它们的区别主要体现在返回结果集的方式上。

1. INNER JOIN

  • 定义INNER JOIN 返回两个表中满足连接条件的记录。
  • 结果集: 只包含两个表中都有匹配记录的行。
  • 语法:SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
  • 示例: 如果 table1 和 table2 中有匹配的记录,则返回这些记录;如果没有匹配的记录,则不返回任何结果。

2. LEFT JOIN (或 LEFT OUTER JOIN)

  • 定义LEFT JOIN 返回左表中的所有记录,即使右表中没有匹配的记录。
  • 结果集: 包含左表的所有记录和右表中匹配的记录。如果右表中没有匹配的记录,则返回 NULL
  • 语法:
    SELECT columns
    FROM table1
    LEFT JOIN table2
    ON table1.column = table2.column;
  • 示例: 即使 table2 中没有与 table1 匹配的记录,table1 的所有记录仍会出现在结果集中,table2 的对应字段为 NULL

3. RIGHT JOIN (或 RIGHT OUTER JOIN)

  • 定义RIGHT JOIN 返回右表中的所有记录,即使左表中没有匹配的记录。
  • 结果集: 包含右表的所有记录和左表中匹配的记录。如果左表中没有匹配的记录,则返回 NULL
  • 语法:
    SELECT columns
    FROM table1
    RIGHT JOIN table2
    ON table1.column = table2.column;
  • 示例: 即使 table1 中没有与 table2 匹配的记录,table2 的所有记录仍会出现在结果集中,table1 的对应字段为 NULL

总结

  • INNER JOIN: 只返回两个表中都有匹配记录的行。
  • LEFT JOIN: 返回左表的所有记录和右表中匹配的记录,右表无匹配时返回 NULL
  • RIGHT JOIN: 返回右表的所有记录和左表中匹配的记录,左表无匹配时返回 NULL

根据查询需求选择合适的连接方式。

THE END
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容