Oracle!你必须要知道的Knowledge points(下)
2019-11-09 23:49
1766 查看
子查询
什么是子查询
当查询中的限制条件需要另一个查询提供时,我们可以把两个查询语句嵌套起来,提供条件的查询语句作为子查询。
子查询,也叫内部查询,先于主查询执行,子查询的结果被用于主查询。
子查询分为单行子查询、多行子查询和多列子查询,单行子查询作为判断条件时用单行运算符,多行子查询和多列子查询作为判断条件时用多行运算符。
单行运算符:>、=、>=、<、<>、<=
多行运算符:in、all、any
子查询可以嵌套在哪里
Where子句:作为非分组函数筛选判断的条件
From子句:将子查询的查询结果作为一张表来使用
Having子句:作为分组函数筛选判断的条件
子查询使用规范
子查询需要用括号括起来
当子查询放在from子句中时,是将查询到的结果作为一张表来使用,需给别名
单行子查询用单行运算符,多行子查询用多行运算符
子查询放在运算符右边
单行子查询
单行子查询返回一行一列,使用单行运算符进行连接
--显示和雇员7369从事相同工作并且工资大于雇员7876的雇员的姓名和工作。 select ename,job from emp where job = (select job from emp where empno =7369) and sal > (select sal from emp where empno = 7876); --查询工资最低的员工姓名,岗位及工资(子查询中使用了分组函数) select ename,job,sal from emp where sal = (select min(sal) from emp) --查询部门最低工资比20部门最低工资高的部门编号及最低工资(子查询嵌套在having子句) select deptno,min(sal) from emp group by deptno having min(sal) > (select min(sal) from emp where deptno = 20 );
多行子查询
多行子查询返回一行或多行记录,使用多行运算符进行连接
--查询是经理的员工姓名、工资 select ename,sal from emp where empno in (select mgr from emp)
ANY的使用
表示和子查询的任意一行结果进行比较,有一个满足条件即可。
any:大于子查询结果的任意一个,即大于最小值即可。
<any:小于子查询结果的任意一个,即小于最大值即可。
=any:等于子查询结果的任意一个,即等一任意一个即可,相当于in。
--查询部门编号不为10,且工资比10部门任意一名员工工资高的员工编号,姓名,职位,工资。 select empno,ename,job,sal from emp where deptno <> 10 and sal > any(select sal from emp where deptno = 10);
ALL的使用
表示和子查询的所有行结果进行比较,每一行必须都满足条件。
<all:表示小于子查询结果集中的所有行,即小于最小值 >all:表示大于子查询结果集中的所有行,即大于最大值。 = all :表示等于子查询结果集中的所有行,即等于所有值。
--查询部门编号不为10,且工资比10部门所有员工工资低的员工编号,姓名,职位,工资。 select empno,ename,job,sal from emp where deptno <> 10 and sal > all(select sal from emp where deptno = 10);
持续更新中
相关文章推荐
- Oracle!你必须要知道的Knowledge points(入门篇)
- 学习Python必须要知道的常用模块
- Oracle 11g必须开启的服务及服务详细介绍
- oracle报错是:您必须具有SELECT ANY DICTIONARY权限
- 16个桌面Linux用户必须要知道的Shell命令
- 你必须要知道的架构知识~第三章 接口用来制定操作的统一性
- ios面试必须要知道的...
- oracle exp出现"ORA-00302:必须说明SET_NO_OUTLINES 组件" 解决方法
- Matlab读取avi视频并播放 你必须要知道的
- Oracle 安装 检查操作系统版本 必须是 5.0 或者5.1 的解决办法 .
- oracle 使用database control 配置数据库时,要求在当前oracle主目录中配置监听程序,必须运行Netca以配置
- 使用database control 配置数据库时,要求在当前oracle主目录中配置监听程序,必须运行Netca以配置监听程序,然后才能继续。或者可以选择继续,但是不要使用database cont
- Android面试必须要知道的事情
- 面试中你必须要知道的语言陷阱
- Oracle 11g必须开启的服务及服务详细介绍(转)
- 搞移动端必须要知道的几个网站
- oracle exp出现"ORA-00302:必须说明SET_NO_OUTLINES 组件" 解决方法
- 前端工程师必须要知道的SEO技巧(1):rel=nofollow的使用
- 微商创业选款:别人不说 但你必须要知道的那些秘密
- 面试必须要知道的SQL语法,语句