子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。本文选自《OCA Oracle Database 11g: SQL Fundamentals I Exam Guide》,本文将对在查询中哪些地方可以使用子查询和哪些子句是必须的以及哪些又是可以选择的进行阐述。阅读本文,以便更好的了解子查询的定义。 下面是单行和多行子查询的例子。
它们是基于演示的HR Schema编写的。你要怎么找到那些经理办公地点在United Kingdom的员工呢?这个查询需求可以用多行子查询实现: select last_name from&……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。本文选自《OCA Oracle Database 11g: SQL Fundamentals I Exam Guide》,本文将对在查询中哪些地方可以使用子查询和哪些子句是必须的以及哪些又是可以选择的进行阐述。阅读本文,以便更好的了解子查询的定义。
下面是单行和多行子查询的例子。它们是基于演示的HR Schema编写的。你要怎么找到那些经理办公地点在United Kingdom的员工呢?这个查询需求可以用多行子查询实现:
select last_name from employees where manager_id in (select employee_id from employees where department_id in (select department_id from departments where location_id in (select location_id from locations where country_id='UK'))); |
前面的查询例子内嵌了3级子查询。我们注意到这些子查询使用了IN操作符,因为它对应的子查询可能返回多行数据。
如果你要查找平均薪水最高的工作,可以通过一个单行子查询来实现:
select job_title from jobs natural join employees group by job_title having avg(salary) = (select max(avg(salary)) from employees group by job_id); |
这个子查询返回单个值:各部门中的最高平均薪水值。这里是可以使用“=”操作符的,因为MAX方法保证了只返回一个值。
这里也可以使用ANY和ALL操作符,但它们的功能可以被其他一些常用的使用聚集的操作符所替代。比如,下面这两个语句,在部门的80位员工中,薪水比其他人高的将被返回,最后得出的是一个均等的结果集。
select last_name from employees where salary > all (select salary from employees where department_id=80); select last_name from employees where salary > (select max(salary) from employees where department_id=80); |
下表总结了ANY和ALL的用法:
Operator | Meaning |
< ANY | less than the highest 小于最大值 |
> ANY | not equal to any member in a list 不等于列表中任一个值 |
ANY | more than the lowest 大于最小值 |
= ANY | equivalent to IN 与IN相同 |
> ALL | more than the highest 大于最大值 |
< ALL | less than the lowest 小于最小值 |
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。
-
2017年11月数据库流行度排行榜 半数以上数据库积分减少
数据库知识网站DB-engines更新了2016年11月份的数据库流行度排行榜。TechTarget数据库网站将与您一同关注11月份的榜单排名情况。
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。