MySQL基础-多表查询之外连接

833 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天点击查看活动详情

外连接

QQ截图20221025093721.png

  • 外连接分为两种,分别是:左外连接 和 右外连接。具体的语法结构为:

左外连接

  • SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ... ;
  • 左外连接相当于查询表1(左表)的所有数据,当然也包含表1和表2交集部分的数据。

右外连接

  • SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 ... ;
  • 右外连接相当于查询表2(右表)的所有数据,当然也包含表1和表2交集部分的数据

案例:

  1. 查询emp表的所有数据, 和对应的部门信息
  • 由于需求中提到,要查询emp的所有数据,所以是不能内连接查询的,需要考虑使用外连接查询。
  • 表结构: emp, dept
  • 连接条件: emp.dept_id = dept.id
select e.*, d.name from emp e left outer join dept d on e.dept_id = d.id;
select e.*, d.name from emp e left join dept d on e.dept_id = d.id;

QQ截图20221025094424.png 2. 查询dept表的所有数据, 和对应的员工信息(右外连接)

  • 由于需求中提到,要查询dept表的所有数据,所以是不能内连接查询的,需要考虑使用外连接查 询。
  • 表结构: emp, dept
  • 连接条件: emp.dept_id = dept.id
select d.*, e.* from emp e right outer join dept d on e.dept_id = d.id;
select d.*, e.* from dept d left outer join emp e on e.dept_id = d.id;

QQ截图20221025094509.png

注意事项:

  • 左外连接和右外连接是可以相互替换的,只需要调整在连接查询时SQL中,表结构的先后顺 序就可以了。而我们在日常开发使用时,更偏向于左外连接。