多表查询概述
概述
- 多表查询就是指从多张表中查询数据。
- 原来查询单表数据,执行的SQL形式为:
select * from emp;
- 那么我们要执行多表查询,就只需要使用逗号分隔多张表即可,如:
select * from emp , dept;
具体的执行结果如下:网络异常,图片无法展示| - 此时,我们看到查询结果中包含了大量的结果集,总共102条记录,而这其实就是员工表emp所有的记录(17) 与 部门表dept所有记录(6) 的所有组合情况,这种现象称之为笛卡尔积。接下来,就来简单 介绍下笛卡尔积。
- 笛卡尔积: 笛卡尔乘积是指在数学中,两个集合A集合 和 B集合的所有组合情况。
网络异常,图片无法展示|
网络异常,图片无法展示
|
- 在SQL语句中,如何来去除无效的笛卡尔积呢? 我们可以给多表查询加上连接查询的条件即可。
网络异常,图片无法展示
|
- 而由于id为17的员工,没有dept_id字段值,所以在多表查询时,根据连接查询的条件并没有查询 到。
分类
连接查询
- 内连接:相当于查询A、B交集部分数据
- 外连接:
- 左外连接:查询左表所有数据,以及两张表交集部分数据
- 右外连接:查询右表所有数据,以及两张表交集部分数据
- 自连接:当前表与自身的连接查询,自连接必须使用表别名