当前位置:Gxlcms > 数据库问题 > Oracle 连接查询

Oracle 连接查询

时间:2021-07-01 10:21:17 帮助过:23人阅读

SQL 1992 select e.ename, e.sal, d.dname, s.grade from emp e, dept d, salgrade s where e.deptno = d.deptno and e.sal between s.losal and s.hisal --SQL 1999 select e.ename, e.sal, d.dname, s.grade from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal

 

6.子查询(A):


6.1 什么是子查询?


在SQL中允许多层嵌套。而子查询,即嵌套在其他查询中的查询。

理解子查询的关键在于把子查询当作一张表来看待。外层的语句可以把内嵌的子查询返回的结果当成一张表使用。
–子查询要用括号括起来
–将子查询放在比较运算符的右边(增强可读性)

6.2 子查询的种类(A)

1.在where中使用的子查询

--查询部门名称为RESEARCH、SALES
select *
from emp
where deptno in
(select deptno from dept where dname in (RESEARCH, SALES))
--查询有哪些人的薪水是在整个雇员的平均薪水之上的
select ename,empno, sal, sal+nvl(comm,0)
from emp
where sal+nvl(comm,0)>(select avg(sal+nvl(comm,0)) from emp);
--查在雇员中有哪些人是经理人
select empno, ename
from emp
where empno in (
select distinct mgr from emp
);
--找出部门编号为20的所有员工中收入最高的职员
select * from emp
where sal >= all(
select sal
from emp
where deptno = 20)
and
deptno = 20

 


2.在from后面使用子查询

--我们要求每个部门平均薪水的等级
select t1.deptno, t1.savg, s.grade
from (select deptno, avg(sal) savg from emp group by deptno) t1
join salgrade s
on t1.savg between s.losal and s.hisal

--求每个部门薪水的平均等级
select t1.deptno, avg(t1.grade)
from (select e.deptno, s.grade
from emp e, salgrade s
where e.sal between s.losal and s.hisal) t1
group by t1.deptno

 

Oracle 连接查询

标签:使用   可读性   多层   需要   column   嵌套   比较   dna   bsp   

人气教程排行