Oracle!你必须要知道的Knowledge points(下)

子查询

什么是子查询


当查询中的限制条件需要另一个查询提供时,我们可以把两个查询语句嵌套起来,提供条件的查询语句作为子查询。
子查询,也叫内部查询,先于主查询执行,子查询的结果被用于主查询。
子查询分为单行子查询、多行子查询和多列子查询,单行子查询作为判断条件时用单行运算符,多行子查询和多列子查询作为判断条件时用多行运算符。
单行运算符:>、=、>=、<、<>、<=
多行运算符: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);

持续更新中

原文地址:https://blog.51cto.com/13646338/2449163

时间: 2024-12-11 20:18:47

Oracle!你必须要知道的Knowledge points(下)的相关文章

Oracle!你必须要知道的Knowledge points(入门篇)

一.入门 oracle有四个用户,分别为sys.system.sysman和scott,其中sys是oracle权限最高的用户,类似于Linux 系统的root,scott是实例用户,上课就以这个用户里的三张员工表empno.dept.salgrade作为示例来授课. 启动服务 1. 快捷键ctrl+alt+del打开任务管理器 2. 选择服务 3. 启动OracleServiceXXXX(XXXX是全局名字)和oracleXXXXXXXListener服务(选中一个按o快速找到哦) 这个非常重

【转】嵌入式程序员应该知道的16个问题

全面解析<嵌入式程序员应该知道的16个问题> ----Sailor_forever分析整理,[email protected] http://blog.csdn.net/sailor_8318/archive/2008/03/25/2215041.aspx 1.预处理器(Preprocessor) 2.如何定义宏 3.预处理器标识#error的目的是什么? 4.死循环(Infinite loops) 5.数据声明(Data declarations) 6.关键字static的作用是什么? 7.

使用Yeoman你必须要知道的

不得不说,这年头写JS程序变得越来越复杂了.虽然大家都为了让写JS变得更简单而创建框架.创建工具,但是感觉已经开始偏离了最初的目的. 今天来说说Yeoman,一帮人为了让写AngularJS程序更高端智能而创建的一个工具.可以利用简单的命令行操作帮你初始化一个Angular App,CSS.图片.View和JS应该放哪都帮你决定好了,连复杂的Grunt都帮你配好了.前端同志只要用"grunt serve"就可以预览你的Web App而不用配置Web服务器,用"grunt bu

在开发第一个Android应用之前需要知道的5件事:

你能否详细讲述一下,在开发Android应用过程中每一阶段要用到的技能和编程语言? 建立一个Android应用程序可以归结为两个主要技能/语言:Java和Android系统.Java是Android的通用编程语言,但是Android还包括学习用于app界面设计的XML语言,学习Android概念,以及从Java编程角度运用这些概念. 学了Java和XML之后,再用Android理念将两者连接起来. 我也有分享过一些学习Activities和 Fragments等的Android相关知识.我最喜欢

(转) Java程序员应该知道的10个调试技巧

原地址:http://www.csdn.net/article/2012-09-03/2809495-java-debugging-tips-with-eclipse 调试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面. 在开始之前,推荐大家去看看Eclipse shortcuts这篇文章,它将会给你带来很多方便.在本文中使用的是Ecli

第二季来袭:奶茶妹妹都用Lync开会了,你们一定要知道的Lync会议的秘密噢~

大家对第一季的关注促使我继续编写第二季,感觉有点像美剧,收视率高我们就继续,哈哈~~写点啥,Lync内容太多了,最近听说奶茶妹妹入职微软了都在使用Lync开会了,那我们就一起谈谈Lync会议的秘密吧! 秘密1:你可以通过视频看到奶茶妹妹噢,还可以设置为重点关注对象. 从Lync 2013开始我们可以支持高清视频了哈,用户在会议过程中视频分辨率最高能够达到1080P级别,也就是1920 x 1080的全高清分辨率噢.另外,在Lync 2013我们可以支持多路视频,可以同时展示5个发言者的视频,并可

PDB文件:每个开发人员都必须知道的 PDB Files

PDB文件:每个开发人员都必须知道的 PDB Files: What Every Developer Must Knowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx PDB文件:每个开发人员都必须知道的 一 什么是PDB文件 大部分的开发人员应该都知道PDB文件是用来帮助软件的调试的.但是他究竟是如何工作的呢,我们可能并不熟悉

[转]在做自动化测试之前你需要知道的

[转]在做自动化测试之前你需要知道的 2015-06-09 转自:在做自动化测试之前你需要知道的 什么是自动化测? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多.一直想动笔写一篇文章分享自动化测试实践中的一些经验.终于决定花点时间来做这件事儿. 首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner.jmeter),或自己所写的一段程序,用于生成1到100个测试数据.

你需要知道的CSS3 动画技术

译自:你需要知道的CSS3 动画技术 译自:What You Need To Know About Behavioral CSS 请尊重版权,转载须注明本站链接! 译序:本文译自Smashingmagazine,但是原文讲述的内容有些浅,也不是很完整,前端观察在翻译的前提下,增加了更多的更系统的内容.如有不足之处,欢迎指正补充. 随着网络的发展,浏览器具有更强的渲染更高级代码的能力,我们正逐步实现跨越所有平台和浏览器的目标.我们不但可以要花费更少的时间来确保我们的盒模型在IE6中看起来正常,而且