多表查询
例子:
1 | select * from emp; #这是单表查询 |
概述:指从多张表中查询数据
笛卡尔积:笛卡尔乘积是指在数学中,两个集合 A集合 和 B集合的所有组合情况 。(在多表查询时,需要消除无效的笛卡尔积)
多表查询分类
- 连接查询
内连接:相当于查询A,B交集部分数据
歪连接:
- 左外连接:查询左表所有数据,以及两张表交集部分数据
- 右外连接:查询右表所有数据,以及两张表交集部分数据
自连接:当前表与自身的连接查询,自连接必须使用表别名
- 子查询
连接查询-内连接
内连接查询语法:
隐式内连接
1
select 字段列表 from 表1,表2 where 条件......;
显示内连接
1
select 字段列表 from 表1 [INNER] JOIN 表2 ON 连接条件...;
内连接查询的是两张表交集的部分
内连接演示:
1 | -- 例题:查询每一个员工的姓名,及关联的部门的名称(隐式和显示内连接各实现一便)。 |
连接查询-外连接
外连接查询语法
左外连接 LEFT 语法:
1
select 字段列表 from 表1 LEFT [OUTER] JOIN 表2 ON 条件...;
相当于查询表1(左表)的所有数据 包括 表1和表2交集部分的数据
右外连接 RIGHT 语法:
1
select 字段列表 from 表1 RIGHT [OUTER] JOIN 表2 ON 条件...;
相当于查询表2(右表)的所有数据 包括 表1和表2交集部分的数据
外连接演示
1 | -- 查询emp表的所有数据,和相对应的部门信息(左外连接) |