MySQL基础-多表查询概述

1,180 阅读1分钟

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

多表查询概述

概述

  • 多表查询就是指从多张表中查询数据。
  • 原来查询单表数据,执行的SQL形式为:select * from emp;
  • 那么我们要执行多表查询,就只需要使用逗号分隔多张表即可,如: select * from emp , dept; 具体的执行结果如下: QQ截图20221023144646.png
  • 此时,我们看到查询结果中包含了大量的结果集,总共102条记录,而这其实就是员工表emp所有的记录(17) 与 部门表dept所有记录(6) 的所有组合情况,这种现象称之为笛卡尔积。接下来,就来简单 介绍下笛卡尔积。
  • 笛卡尔积: 笛卡尔乘积是指在数学中,两个集合A集合 和 B集合的所有组合情况。 QQ截图20221023144716.png 而在多表查询中,我们是需要消除无效的笛卡尔积的,只保留两张表关联部分的数据。

QQ截图20221023144727.png

  • 在SQL语句中,如何来去除无效的笛卡尔积呢? 我们可以给多表查询加上连接查询的条件即可。

QQ截图20221023144938.png

  • 而由于id为17的员工,没有dept_id字段值,所以在多表查询时,根据连接查询的条件并没有查询 到。

分类

连接查询

  • 内连接:相当于查询A、B交集部分数据
  • 外连接:
  • 左外连接:查询左表所有数据,以及两张表交集部分数据
  • 右外连接:查询右表所有数据,以及两张表交集部分数据
  • 自连接:当前表与自身的连接查询,自连接必须使用表别名