子查询

子查询指一个查询语句嵌套在另一个查询语句内部的查询

1.from后面的子查询

举例:查询员工的姓名和他上级的姓名

SELECT E.*, E2.EMPNO, E2.ENAME MNAME, E2.JOB, E2.SAL, E2.DEPTNOFROM EMP E, EMP E2WHERE E.MGR = E2.EMPNO(+);

所谓的from后面的子查询,无法就像将上面代码当作一张 “表” ,在外层在套一层select语句,表示从后面语句的结果集里进行字段筛选。

SELECT ENAME, MNAMEFROM (SELECT E.*, D.EMPNO, D.ENAME MNAME, D.JOB, D.SAL, D.DEPTNOFROM EMP E, EMP DWHERE E.MGR = D.EMPNO(+));

2.where后面的子查询

2.1 单行子查询

单行子查询:子查询的sql语句只查出一条记录

举例:查询工资大于10号部门平均工资的员工信息
首先查询10号部门的员工平均工资

SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 10;

也就是说我要查询的数据,其工资要大于我上面查的值。那我们可以这么写:

SELECT * FROM EMP WHERE SAL > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 10);

2.2 多行子查询

多行子查询:子查询的sql语句查出若干条记录。
一般用于:IN,NOT IN,EXISTS,NOT EXISTS,ALL,ANY

举例:查询工资比20号部门所有人工资都高的员工信息
1)用单行子查询实现
思路:现在查询20部门最高的工资

SELECT MAX(SAL) FROM EMP WHERE DEPTNO = 20;

然后将上面语句做为条件写入到where条件表达式种

 SELECT *FROM EMPWHERE SAL > (SELECT MAX(SAL) FROM EMP WHERE DEPTNO = 20);

2)用多行子查询实现:>all
思路:首先查询20部门的工资,将其视为一个集合

SELECT SAL FROM EMP WHERE DEPTNO = 20;

将上面查询的集合放入where条件中,用 >all (等价于大于最大的)

SELECT * FROM EMP WHERE SAL > ALL (SELECT SAL FROM EMP WHERE DEPTNO = 20);

3.having后面的子查询

举例:查询各个部门的部门编号和员工人数,要求部门的平均工资大于30号部门的平均工资
首先我们需要查询出30部门的平局工资

SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 30;

然后将其做为条件利用having进行过滤

SELECT DEPTNO, COUNT(*)FROM EMPGROUP BY DEPTNO
HAVING AVG(SAL) > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 30);

4.select 和from 之间的子查询

注意:select 和from之间的子查询,子查询的结果只能是单行单列

SELECT EMPNO, ENAME, (SELECT 1 FROM DUAL) FROM EMP;

【Oracle 数据库】奶妈式教程 day09 子查询相关推荐

  1. 【Oracle 数据库】奶妈式教程day03 排序查询

    排序分组 1 排序 select 列名,列名,..,列名 from 表名 where 条件表达式 order by 排序列的列名 asc|desc; asc|desc: asc表示升序,desc表示降 ...

  2. 【从零开始学习Oracle数据库】(3)函数与子查询和连接查询

    #-- --查询语句的基本格式 --select 字段 1 , 字段 2 , 字段 3 , 表达式 , 函数 , ... --from 表名 --where 条件 --group by 列名 --ha ...

  3. oracle数据库的基本教程 pdf,Oracle数据库技术基础教程 PDF 下载

    相关截图: 资料简介: 本书主要介绍Oracle数据库的基本概念.知识和技术,注重培养Oracle数据库技术的基本操作技能.本书内容体系完整,覆盖了Oracle数据库技术的主要组成部分,设置有Orac ...

  4. mysql数据库项目式教程答案_MySQL数据库项目式教程(高职高专国家示范性院校十三五规划教材)...

    导语 内容提要 郭水泉.关丽梅.王世刚主编的<MySQL数据库项目式教程(高职高专国家示范性院校十三五规划教材)>详细介绍了如何安装.管理.备份.维护和优化一个MySQL系统.全书分为八个 ...

  5. 【Oracle 数据库】奶妈式教程day15 DDL、DML、索引、视图、序列、死锁这一篇就够了

    表操作 创建表 -- 创建新表 create table 表名(字段名 类型(长度),...其他字段... );-- 数据类型VARCHAR2(size) 可变长度的字符串,最大长度为size个字节: ...

  6. 怎样学好Oracle子查询,Oracle学习(六):子查询

    Oracle学习(6):子查询 子查询 为何要用子查询 SQL> --查询工资比SCOTT高的员工信息 SQL> --1. 知道SCOTT的工资 SQL> select sal fr ...

  7. oracle结果集过大,多重子查询/大结果集查询问题

    多重子查询/大结果集查询问题: 问题接此帖http://www.itpub.net/273652.html 上次问题通过调整SGA/SQL语句得到优化[最终情况:oracle关闭重起后,程序第一次执行 ...

  8. Oracle数据库初学者入门教程

    Oracle数据库是相对于其他数据库来说比较难的一个.Oracle Database,又名Oracle RDBMS,简称Oracle.是甲骨文公司推出的一款关系数据库管理系统.Oracle数据库系统是 ...

  9. oracle数据库12cocp培训教程,OCA/OCP认证考试指南全册(第3版) Oracle Database 12c 中文pdf扫描版[164MB]...

    完备的OCA(1Z0-061.1Z0-062)和OCP(1Z0-063)考试指南<OCA/OCP认证考试指南全册(第3版)>是为OCA和OCP考试准备的指南.<OCAOCP认证考试指 ...

最新文章

  1. J2EE基础之JSP
  2. gcc 常用命令-Wall
  3. mybatis入门-第一个程序
  4. ESFramework网络通信框架介绍之(3)――消息处理器和处理器工厂
  5. 用友致远协同OA办公软件可以给外驻领导带来什么好处?
  6. 标准 I/O (带缓冲)
  7. 《可解释的机器学习》校对活动正式启动 | ApacheCN
  8. 如何查看linux系统的存储空间大小,linux 如何查看硬盘大小,存储空间大小等系统信息及硬件信息...
  9. 4.1 深层神经网络
  10. Ubuntu Linux服务器安装JDK8
  11. 背包九讲(超详细 :算法分析 + 问题分析 + 代码分析)
  12. Duck Duck Go Architecture
  13. 艾永亮:百果园的商业模式是什么?打造超级产品引领生鲜电商行业
  14. 字节跳动---雀魂启动
  15. 通过组策略实现windows远程协助msra.exe
  16. Ubuntu14.04与Win10双系统环境的配置(引导, 无线网卡)
  17. 苹果iOS系统下检查第三方APP是否安装
  18. HYDRUS模型应用高级培训班
  19. win10 进入system账户权限
  20. 阿里云服务器可以做什么?十大使用场景举例说明

热门文章

  1. 解数报告 | 销量甩开第二名2倍,猫砂TOP1 Pidan有啥秘诀?
  2. 如何制作轮播图片二维码?二维码中的图片如何排版?
  3. STM32驱动0.96寸OLED液晶屏
  4. html5微课程制作,用H5做微课的好处,你知道多少?
  5. 2022化工自动化控制仪表题库及在线模拟考试
  6. Redis之消息队列的实现
  7. 【计算机二级Python】模拟试卷第3套选择题
  8. java 怎样创建字符串数组_Java 创建并声明字符串数组
  9. python 使用matplotlib.pyplot画线
  10. C#:CheckedListBox的用法