Oracle数据库子查询介绍
我们渐渐的对Oracle的知识,有了进一步的了解与掌握,随着时间的推移,在这节课程中我们来讲解SQL子查询的知识,希望通过授课中的内容对你有所帮助!
- 子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。
- 使用子查询注意事项:
- 子查询可以嵌套多层
- 子查询需要圆括号()括起来
- 子查询语法:
- SELECT select_list
- FROM table
- WHERE expr operator
- (SELECT select_list
- FROM table);
- 子查询 (内查询) 在主查询之前一次执行完成。
- 子查询的结果被主查询使用 (外查询)。
- 举例:查询员工的工资大于JONES的员工信息
- 分析过程如下:
- 首先:查询JONES的员工工资是多少 :结果2975
- SQL> select sal from emp where ename='JONES';
- 实际上我们要查询的是:薪资大于2975的员工的信息写法如下:
- SQL> select * from emp where sal>2975;
-
- SQL> select * from emp where sal>(select sal from emp where ename='JONES');
- 注意:
- 子查询要包含在括号内。
- 将子查询放在比较条件的右侧。
-
- 根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,
- 注意:
- 单行操作符对应单行子查询,多行操作符对应多行子查询。
- 单行操作符
- >、>=、 <、 <= 、<>、=
- 举例:
-
- SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);
-
- SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);
-
- SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);
-
- 备注:子查询可以返回空行 没要查询到结果是可以的。
-
- 多行子查询
- 返回多行。
- 使用多行比较操作符。
- 操作符如下图:
- 操作符 描述
- In 等于列表中的任何一个
- Any 子查询返回的任意一个值比较 相同还有some
- All 和子查询返回的所有值比较
- Exists
-
-
- SQL> select * from emp where sal < any (select sal from emp where job='CLERK') and job<>'CLERK';
-
- SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job<>'CLERK';
-
- SQL> select * from emp where job in(select job from emp where deptno=10) and deptno<>10;
-
- 只做思考?
-
- SQL> select * from emp where exists(select * from dept);
-
- EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
- ----- ---------- --------- ----- ----------- --------- --------- ------
- 7369 SMITH CLERK 7902 1980-12-17 800.00 20
- 7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
- 7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
- …..
-
- SQL> select * from emp where exists(select * from dept where deptno=80);
-
- EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
- ----- ---------- --------- ----- ----------- --------- --------- ------
-
-
- 以上内容版权归redarmy_chen所有,如需转载请附带出处,如有疑问请发送邮件至redarmy_chen@qq.com
评论暂时关闭