oracle 4 : 连接查询
连接查询: join
(1)等值连接: 通常用主外键连接
(2)非等值连接
例
--统计每个人姓名。部门名,薪资,薪资级别 select ename,d.dname,e.sal,s.grade from emp e,dept d,salgrade s where e.sal between s.losal and s.hisal and e.deptno = d.deptno
![](https://images2018.cnblogs.com/blog/1355959/201804/1355959-20180420100234722-353070443.png)
(3)内部连接 关键字 inner join on 想当于where
select * from emp e inner join dept d on d.deptno = e.deptno
(4)外部连接 左右连
左连接:left join 以左边表为主表
右连接:
全外连接 :把表中所有数据都显示出来,有关联的数据,使用关联条件拼接,没有数据的用null 填充 关键字: full outer join
(5)自身连接
--自身连接 查询员工的上级领导 select e1.ename,e1.job,e2.ename from emp e1,emp e2 where e1.mgr = e2.empno
(6)交叉连接,产生笛卡尔积
--交叉连接 select * from emp cross join dept
(6)自然连接 关键字 natural join
根据同名列进行自动连接
要求同名列的数据类型必须相同,长度必须相同,主外键必须一致
相当于没有条件的等值连接
--自然连接 select * from emp natural join dept
(7)联合查询: 多个投影结果合并在一起 关键字 union all
要求进行查询的结果的列数必须相同:
对应的列的数据类型必须相同,长度口蹄疫不同
union all 全部显示
union 自动去除重复数据
--联合查询 select empno, ename from emp union all select deptno,dname from dept
去重关键字: distinct:
--查询都有哪些部门有员工,员工在哪些部门里 select distinct deptno from emp