连接查询
连接查询,也叫跨表查询,需要关联多个表进行查询
连接查询的本质是两张表格进行笛卡尔乘积,如果有关联条件,那么根据条件显示符合的数据记录
1. 内连接
表1 inner join 表2 on 关联条件
做连接查询的时候一定要写上关联条件
inner可以省略
#查出所有员工所属部门的名称
select e.ename,d.dname
from emp e
join dept d
on e.deptno=d.deptno;
2. 外连接
- 左外连接
表1 left outer join 表2 on 关联条件
做连接查询的时候一定要写上关联条件
outer可省略
#查出每个员工对应的上级领导名字
select e.ename as emp, m.ename as leader
from emp e
left join emp m #由于King的领导为null,因此使用左连接显示左表全部内容
on e.mgr=m.empno;
- 右外连接
表1 right outer join 表2 on 关联条件
做连接查询的时候一定要写上关联条件
outer可省略
#查出所有部门名称下的所有员工信息
select e.*,d.dname
from emp e
right join dept d #由于40部门没有员工也要展示出来,因此使用了右连接
on e.deptno=d.deptno;
- 左右连接区别
左连接以左表为准,左表内容无关条件,都会显示出来;右连接刚好相反,因此两则可以互相转换
3. 多表连接
只需在第一次join..on..后面再join 其他表 on..即可
#查出员工的所属部门以及工资等级
select e.ename,d.dname,s.grade
from emp e
join dept d
on e.deptno=d.deptno
join salgrade s
on e.sal between losal and hisal;