MySQL 外连接、内连接与自连接的区别

MySQL 外连接、内连接与自连接的区别

在MySQL中,外连接(Outer Join)、内连接(Inner Join)和自连接(Self Join)是SQL中用于连接多个表的不同类型的操作,它们之间有以下区别:

  1. 内连接(Inner Join):
    • 内连接是最常见的连接类型,它返回两个表中符合连接条件的行。
    • 内连接会将两个表中满足连接条件的行进行匹配,然后将匹配的结果组合起来,生成一个新的结果集。
    • 如果某个表中的行在另一个表中找不到匹配的行,则这些行不会包含在结果集中。
    • 内连接可以使用INNER JOIN关键字来实现。
SELECT *
FROM table1
INNER JOIN table2 ON table1.column = table2.column;
  1. 外连接(Outer Join):
    • 外连接是一种扩展了内连接的连接类型,它可以包含未匹配的行。
    • 外连接会将满足连接条件的行与未满足连接条件的行合并在一起,形成一个结果集。
    • 外连接分为左外连接(Left Outer Join)和右外连接(Right Outer Join),分别表示左表和右表的行都会包含在结果集中。
    • 左外连接会包含左表的所有行,即使右表中没有与之匹配的行;右外连接则会包含右表的所有行,即使左表中没有与之匹配的行。
    • 外连接可以使用LEFT JOINRIGHT JOIN或者FULL OUTER JOIN关键字来实现。
-- 左外连接
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;

-- 右外连接
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;
  1. 自连接(Self Join):
    • 自连接是指将单个表视为两个表来进行连接,从而实现在同一个表中进行关联查询的操作。
    • 自连接常用于需要在同一个表中查询相关数据的场景,例如查询员工及其直接经理的信息。
    • 自连接会创建一个虚拟表,这个虚拟表将原始表的每一行视为不同的两行,然后进行连接。
    • 自连接可以使用表的别名来实现。
SELECT e1.name AS employee, e2.name AS manager
FROM employees e1
JOIN employees e2 ON e1.manager_id = e2.id;

总结来说,内连接返回两个表中符合连接条件的行,外连接扩展了内连接,可以包含未匹配的行,而自连接是在同一个表中进行连接查询。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值