|
###关联查询
- 同时查询多张表的数据的查询方式称为关联查询
- 关联查询必须写关联关系,如果不写则会得到两种表数据的乘积, 这个乘积被称为笛卡尔积, 这是一个错误的查询结果,在工作中要避免出现.
- 关联查询的方式有三种
####等值连接
- 格式: select 字段信息 from A,B where 关联关系 and 其它条件
1. 查询每个员工的姓名和对应的部门名
select e.ename,d.dname
from emp e,dept d
where e.deptno=d.deptno;
2. 查询1号部门的员工姓名,工资,部门名,部门地址
select e.ename,e.sal,d.dname,d.loc
from emp e,dept d
where e.deptno=d.deptno and d.deptno=1;
####内连接(建议使用)
- 格式: select 字段信息 from A join B on 关联关系 where 条件
1. 查询每个员工的姓名和对应的部门名
select e.ename,d.dname
from emp e join dept d
on e.deptno=d.deptno;
2. 查询1号部门的员工姓名,工资,部门名,部门地址
select e.ename,e.sal,d.dname,d.loc
from emp e join dept d
on e.deptno=d.deptno where e.deptno=1;
###外连接
- 查询一张表的全部数据和另外一张表的交集数据
- 格式: select 字段信息 from A left/right join B on 关联关系 where 条件
1. 查询所有部门的名称和对应的员工名
select d.dname,e.ename
from emp e right join dept d
on e.deptno=d.deptno;
2. 查询所有员工姓名和对应的部门信息
insert into emp (empno,ename) values(100,'灭霸');
select e.ename,d.*
from emp e left join dept d
on e.deptno=d.deptno;
####关联查询总结
- 三种查询方式: 等值连接,内连接,外连接
- 如果需要查询两张表的交集数据使用等值连接和内连接(推荐)
- 如果查询一张表的全部和另外一张表的交集则使用外连接
|
|