Oracle【子查询】

Oracle子查询:当一个查询依赖于另外一个查询的结果的时候,就需要使用子查询。
单行子查询 :
筛选条件不明确,需要执行一次查询且查询结果只有一个字段且字段值只有一个。
注意:where子句中允许出现查询语句,该查询语句称为子查询。
使用:select 内容 from 表名 where 字段名 比较运算符 子查询语句

 1 --查询所有比雇员‘CLARK‘工资高于员工的信息
 2 select * from emp where sal>(select sal from emp where ename=‘CLARK‘);
 3 --查询工资高于平均工资的员工的名字和工资
 4 select ename,sal from emp where sal>(select avg(sal) from emp);
 5 --查询和soctt属于同一部门且工资比他低的员工资料
 6 select * from emp where deptno=(select deptno from emp where ename=‘SCOTT‘) and sal<(select sal from emp where ename=‘SCOTT‘);
 7 --查询工资最高的员工资料
 8 select * from emp where sal=(select max(sal) from emp);
 9 --查询职务和SCOTT相同,雇佣时间早的员工信息
10 select * from emp where job=(select job from emp where ename=‘SCOTT‘) and hiredate < (select hiredate from emp where ename=‘SCOTT‘);
11 --查询工资比SCOTT高或者雇佣时间早的员工编号和姓名
12 select empno,ename from emp where sal>(select sal from emp where ename=‘SCOTT‘) or hiredate < (select hiredate from emp where ename=‘SCOTT‘);

多行子查询:
子查询的结果只有一个字段但是字段有n个值,考虑使用多行子查询,其实使用关键字
关键字1:any 任意
  select 内容 from 表名 where 字段名 比较运算符 any 子查询语句
关键字2:all 所有
  select 内容 from 表名 where 字段名 比较运算符 all 子查询语句
关键字3:in 表示任意存在,相当于 = any 
  select 内容 from 表名 where 字段名 in 子查询语句 
  select 内容 from 表名 where 字段名 not in 子查询语句

1 --查询工资高于任意一个CLERK的所有员工信息
2 select * from emp where sal> any (select sal from emp where job=‘CLERK‘);
3 --查询工资高于所有的SALESMAN的员工信息
4 select * from emp where sal> all (select sal from emp where job=‘SALESMAN‘);
5 --查询部门20中同部门10的雇员工作一样的雇员信息
6 select * from emp where job  in (select job from emp where deptno=10) and deptno=20;

原文地址:https://www.cnblogs.com/cao-yin/p/9747588.html

时间: 2024-10-11 21:22:23

Oracle【子查询】的相关文章

数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> 数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例 实验所用数据表 子查询,解决一步不能求解 查询工资比scott高的员工信息: 子查询知识体系搭建: 解释3,查询部门是sales的员工信息: 方法1:子查询 [方法2]:多表: 优化考虑: 解释4[select],只能放单行子查询 解释4[from] 考题:显示员工姓名,薪水 解释

oracle 子查询因子化 浅谈(with的使用)

近来学习oracle,想要提高自己所写语句的效率和易读性,今天的笔记是关于子查询因子话这么一个东西 因子化的查询不一定可以提高效率,但是一定可以再提高程序的可读性方面成效显著 --with 语句 with sales_c ( select sales,e_NO,e_name from emplyee ) select * from sales_c; --查询的结果就是( select sales,e_NO,e_name from emplyee)这张字表中的内容 --with一次声明,在下面的例

Oracle - 子查询、TOP - N

1 子查询 sql 中查询是可以嵌套的,一个查询的结果可以作为另外一个查询的条件.表. 1 SELECT select_list 2 FROM table 3 WHERE expr operator 4 (SELECT select_list 5 FROM table); 理解子查询的关键在于把子查询当作一张表来看待,外层的语句可以把内嵌的子查询返回的结果当成一张表使用,子查询结果可以作为一个虚表被使用.注意,子查询要用括号括起来 .子查询根据其返回结果可以分为单行子查询和多行子查询. 1.1

oracle子查询中not in后面不能为null值的理解

首先说说oracle中的null值吧. null在oracle中代表未知,表示可能有,也可能没有.任何与null值的普通运算都为null,但可以用一些函数来处理null值,oracle排序中默认null最大. 接着进入正文 这里in后面有null,能返回数据 但加了not后,就不能返回数据了 这里的in后面的句子可以理解为or拼接,即 id in (200,201,null)可以等价于id=200 or id=201or id=null, id not in (200,201,null)可以等价

oracle子查询

子查询:在一个查询的内部包括另外一个查询. 普通子查询 -- 查询出比7654工资还高的全部雇员的信息 select * from emp e where e.sal > (select sal from emp where empno = 7654); -- 查询出工资比7654高,同时与7788从事相同工作的全部雇员的信息 select * from emp e where e.sal > (select sal from emp where empno = 7654) and e.job

Oracle子查询、创建和管理表

总结 子查询: 单行子查询:返回单行 使用单行比较操作符 多行子查询:多行子查询返回多行 多行操作符: IN, ANY,ALL 若子查询查询结果为空,则不返回任何行 创建和管理表: 查询数据字典: 查看用户定义的表: SELECT table_name FROM user_tables; 查看用户定义的各种数据对象: SELECT distinct object_type FROM user_objects; 查看用户定义的表,视图,同义词和序列 SELECT * FROM user_catal

Oracle子查询(嵌套查询)

概念: 所谓子查询,即一个select语句中嵌套了另外的一个或者多个select语句 需求:查找和Smith同部门的所有员工的id和last_name 目标: 员工id,last_name from:  s_emp 条件: s_emp.dept_id = Smith所在部门的id? select id,last_name from s_emp where dept_id = ? 阶段目标: Smith所在部门的id 目标: dept_id from : s_emp 条件: last_name =

Hibernate oracle子查询

实体类 图书编号,名称,出版社,价格 查询图书的价格大于图书的平均价格的图书信息 多表联查 原文地址:https://www.cnblogs.com/ztca/p/8194240.html

oracle 子查询 嵌套查询 子查询用有null问题

通常情况下, 数据库中不要出现null,最好的做法加上非空约束Not null,null值并不代表不占空间, char(100) null占100个字符 1 --查询不是领导的信息(含null值错误写法) 2 3 select * from emp where empno not in (select mgr from emp); --查询不到记录 4 5 select * from emp where empno <>all(select mgr from emp);--上行等价写法 6 7