【Oracle 数据库】奶妈式教程 day09 子查询
子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询
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 子查询相关推荐
- 【Oracle 数据库】奶妈式教程day03 排序查询
排序分组 1 排序 select 列名,列名,..,列名 from 表名 where 条件表达式 order by 排序列的列名 asc|desc; asc|desc: asc表示升序,desc表示降 ...
- 【从零开始学习Oracle数据库】(3)函数与子查询和连接查询
#-- --查询语句的基本格式 --select 字段 1 , 字段 2 , 字段 3 , 表达式 , 函数 , ... --from 表名 --where 条件 --group by 列名 --ha ...
- oracle数据库的基本教程 pdf,Oracle数据库技术基础教程 PDF 下载
相关截图: 资料简介: 本书主要介绍Oracle数据库的基本概念.知识和技术,注重培养Oracle数据库技术的基本操作技能.本书内容体系完整,覆盖了Oracle数据库技术的主要组成部分,设置有Orac ...
- mysql数据库项目式教程答案_MySQL数据库项目式教程(高职高专国家示范性院校十三五规划教材)...
导语 内容提要 郭水泉.关丽梅.王世刚主编的<MySQL数据库项目式教程(高职高专国家示范性院校十三五规划教材)>详细介绍了如何安装.管理.备份.维护和优化一个MySQL系统.全书分为八个 ...
- 【Oracle 数据库】奶妈式教程day15 DDL、DML、索引、视图、序列、死锁这一篇就够了
表操作 创建表 -- 创建新表 create table 表名(字段名 类型(长度),...其他字段... );-- 数据类型VARCHAR2(size) 可变长度的字符串,最大长度为size个字节: ...
- 怎样学好Oracle子查询,Oracle学习(六):子查询
Oracle学习(6):子查询 子查询 为何要用子查询 SQL> --查询工资比SCOTT高的员工信息 SQL> --1. 知道SCOTT的工资 SQL> select sal fr ...
- oracle结果集过大,多重子查询/大结果集查询问题
多重子查询/大结果集查询问题: 问题接此帖http://www.itpub.net/273652.html 上次问题通过调整SGA/SQL语句得到优化[最终情况:oracle关闭重起后,程序第一次执行 ...
- Oracle数据库初学者入门教程
Oracle数据库是相对于其他数据库来说比较难的一个.Oracle Database,又名Oracle RDBMS,简称Oracle.是甲骨文公司推出的一款关系数据库管理系统.Oracle数据库系统是 ...
- oracle数据库12cocp培训教程,OCA/OCP认证考试指南全册(第3版) Oracle Database 12c 中文pdf扫描版[164MB]...
完备的OCA(1Z0-061.1Z0-062)和OCP(1Z0-063)考试指南<OCA/OCP认证考试指南全册(第3版)>是为OCA和OCP考试准备的指南.<OCAOCP认证考试指 ...
最新文章
- J2EE基础之JSP
- gcc 常用命令-Wall
- mybatis入门-第一个程序
- ESFramework网络通信框架介绍之(3)――消息处理器和处理器工厂
- 用友致远协同OA办公软件可以给外驻领导带来什么好处?
- 标准 I/O (带缓冲)
- 《可解释的机器学习》校对活动正式启动 | ApacheCN
- 如何查看linux系统的存储空间大小,linux 如何查看硬盘大小,存储空间大小等系统信息及硬件信息...
- 4.1 深层神经网络
- Ubuntu Linux服务器安装JDK8
- 背包九讲(超详细 :算法分析 + 问题分析 + 代码分析)
- Duck Duck Go Architecture
- 艾永亮:百果园的商业模式是什么?打造超级产品引领生鲜电商行业
- 字节跳动---雀魂启动
- 通过组策略实现windows远程协助msra.exe
- Ubuntu14.04与Win10双系统环境的配置(引导, 无线网卡)
- 苹果iOS系统下检查第三方APP是否安装
- HYDRUS模型应用高级培训班
- win10 进入system账户权限
- 阿里云服务器可以做什么?十大使用场景举例说明