mysql 的内连接和外连接的区别是什么

mysql 的内连接和外连接的区别是什么,不能能具体举例说下
在 MySQL 中,内连接(INNER JOIN)和外连接(包括 LEFT JOIN、RIGHT JOIN 和 FULL JOIN)是 SQL 查询中用于结合两个或多个表的数据的方式。它们的主要区别在于如何处理在连接条件中不满足匹配的行。

内连接(INNER JOIN)
内连接返回两个表中满足连接条件的行。如果一行在任何一个表中没有匹配的行,那么该行就不会出现在结果集中。

例子:

假设我们有两个表:employees 和 departments。

employees 表:

plaintext

employee_idemployee_namedepartment_id
1Alice10
2Bob20
3Charlie10
departments` 表:

plaintext

department_iddepartment_name
10HR
20Engineering
30Marketing
如果我们想要查询每个员工和他们所在的部门,可以使用内连接:

sql
SELECT employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;
结果:

plaintext

employee_namedepartment_name
AliceHR
BobEngineering
CharlieHR
注意,Marketing 部门没有员工,因此它不会出现在结果集中。

外连接
外连接会返回满足连接条件的行,以及在一个表中有而在另一个表中没有匹配的行。MySQL 支持 LEFT JOIN(左外连接)、RIGHT JOIN(右外连接)和 FULL JOIN(全外连接)。

LEFT JOIN(左外连接):返回左表中的所有行,以及右表中匹配的行。如果右表中没有匹配的行,则结果集中右表的部分会显示为 NULL。

RIGHT JOIN(右外连接):与 LEFT JOIN 相反,返回右表中的所有行,以及左表中匹配的行。如果左表中没有匹配的行,则结果集中左表的部分会显示为 NULL。

FULL JOIN(全外连接):返回当左表或右表中有匹配的行时的行。如果左表或右表中没有匹配的行,则结果集中没有匹配的部分会显示为 NULL。

LEFT JOIN 例子:

sql
SELECT employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;
结果:

plaintext

employee_namedepartment_name
AliceHR
BobEngineering
CharlieHR
NULLMarketing
在这个例子中,Marketing 部门没有员工,但仍然出现在结果集中,因为 LEFT JOIN 会返回左表(employees)中的所有行。

RIGHT JOIN 和 FULL JOIN 的例子可以类似地构建,只是结果集会根据连接的表和连接条件的不同而有所变化。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值