持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天点击查看活动详情
多表查询概述
概述
- 多表查询就是指从多张表中查询数据。
- 原来查询单表数据,执行的SQL形式为:
select * from emp;
- 那么我们要执行多表查询,就只需要使用逗号分隔多张表即可,如:
select * from emp , dept;
具体的执行结果如下: - 此时,我们看到查询结果中包含了大量的结果集,总共102条记录,而这其实就是员工表emp所有的记录(17) 与 部门表dept所有记录(6) 的所有组合情况,这种现象称之为笛卡尔积。接下来,就来简单 介绍下笛卡尔积。
- 笛卡尔积: 笛卡尔乘积是指在数学中,两个集合A集合 和 B集合的所有组合情况。
而在多表查询中,我们是需要消除无效的笛卡尔积的,只保留两张表关联部分的数据。
- 在SQL语句中,如何来去除无效的笛卡尔积呢? 我们可以给多表查询加上连接查询的条件即可。
- 而由于id为17的员工,没有dept_id字段值,所以在多表查询时,根据连接查询的条件并没有查询 到。
分类
连接查询
- 内连接:相当于查询A、B交集部分数据
- 外连接:
- 左外连接:查询左表所有数据,以及两张表交集部分数据
- 右外连接:查询右表所有数据,以及两张表交集部分数据
- 自连接:当前表与自身的连接查询,自连接必须使用表别名