子查询在一个select中出现多个嵌套查询语句

1、在where子句中使用子查询(一般返回"单行单列" "单行多列" "多行单列"(可以提供in、any、all ))

示例1:查找低于平均工资的雇员信息(返回单行单列)

select * from emp where sal < (select avg(sal) from emp)

示例2:查找出公司最早雇佣的雇员信息(返回单行单列)

select * from emp where hiredate =(select min(hiredate) from emp) 

示例3:与scott从事同一个工作,且工资相同(返回多行单列)--但是一般不这么使用

select * from emp
where ((job, sal)= (select job, sal from emp where ename='SCOTT')) and (ename != 'SCOTT')

在子查询返回多行单列的时候,可以使用in、any、all 进行比较

⑴   in和not in(不能与null一起使用)的用法

示例:查询和职位是MANAGER工资不同的员工信息

select * from emp
where sal not in (select sal from emp where job='MANAGER') ;

⑵  any的用法(  “>any”大于最小的 “<any”小于最大的)

示例1:查询和职位是MANAGER工资相同的员工信息(”=any”和in一样用法)

select * from emp
where sal =any (select sal from emp where job='MANAGER') ;

示例2:查询比职位是MANAGER工资最低工资还高的员工信息(”>any”就是比最小的大)

select * from emp
where sal >any (select sal from emp where job='MANAGER') ;

示例3:查询比职位是MANAGER工资最高工资还低的员工信息(”<any”就是比最大的小)

select * from emp
where sal <any (select sal from emp where job='MANAGER') ;

⑶  all的用法(“>all”比最大的大 “<all”比最小的小)

示例1:查询比职位是MANAGER工资都高的员工信息(”>all”就是比最大的还大)

select * from emp
where sal >all (select sal from emp where job='MANAGER') ;

示例2:查询比职位是MANAGER工资都低的员工信息(”<all”就是比最小的还小)

select * from emp
where sal <all (select sal from emp where job='MANAGER') ;

2、在having子句中使用子查询,使用的情况只有在子查询返回单行单列,并且使用统计函数的情况

示例1:查询出高于公司平均工资的员工的职位名称,职位人数,平均工资

select job, count(empno), avg(sal)
from emp
group by job
having avg(sal) > (select avg(sal) from emp) ;

3、在select子句中使用子查询(返回单行单列,不过一般不使用)

示例1:查询每个雇员的编号、姓名、职位、部门名称

使用多表查询:

select e.empno, e.ename, e.job, d.dname
from emp e, dept d
where e.deptno=d.deptno(+) ;

使用select子查询:

select e.empno, e.ename, e.job, (select dname from dept d where e.deptno=d.deptno) dname
from emp e ;   

4、在from子句中使用子查询(返回多行多列)

示例1:查询每个部门名称、位置、部门人数

使用多表查询:

select d.dname, d.loc, count(empno)
from emp e, dept d
where e.deptno=d.deptno(+)
group by d.dname, d.loc ;

使用from子查询:

  |-查询部门的名称、位置、编号

select deptno, dname, loc from dept ; 

  |-查询部门的编号和部门人

select  deptno, count(empno)
from emp
group by deptno ;

  |-实现在from的子查询,相当与将两张表做多表连接查询

select d.dname, d.loc, temp.count
from dept d, (select deptno, count(empno) count from emp group by deptno ) temp
where d.deptno=temp.deptno(+) ;

注意:1、当子查询返回单行单列、多行单列、单行多列的情况,在where子句中实现子查询

   2、having子句中使用子查询,使用的情况只有在子查询返回单行单列,并且使用统计函数的情况

     3、当子查询返回多行多列的情况,在from子句中实现子查询

     4、一般不在select子句中实现子查询

转载于:https://www.cnblogs.com/xiaoxing/p/5339820.html

Oracle 数据库基础学习 (六) 子查询相关推荐

  1. 数据库Mysql的学习(六)-子查询和多表操作

    UPDATE readerinfo SET balance = balance-(SELECT price FROM bookinfo WHERE book_id=20150301)*0.05 WHE ...

  2. 【Oracle数据库基础学习】

    数据库 设置用户密码 //用户名 system //密码 zyz zyz 登录 sqlplus 是oracle自带的工具,可以使用其命令登录到oracle数据中,并执行用户编写的sql语句. 查看系统 ...

  3. 【Oracle数据库】关联、子查询

    关联.子查询 内连接 等值连接 范围链接(不等值连接) 自然连接 外连接 左连接 右连接 全连接 自连接 交叉连接(笛卡尔积) 子查询 联合查询 并集 交集 补集 模糊查询 in 内连接 等值连接 显 ...

  4. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  5. oracle空间数据库实验报告,Oracle数据库实验报告六 PL/SQL基础

    Oracle数据库实验报告六 PL/SQL基础 -by QQC from BTBU [实验目的] PL/SQL的安装网上有很多教程这里就不做赘述了,如果后序需求大的话我再考虑做一期PL/SQL安装使用 ...

  6. oracle 数据库怎么查询,Oracle 数据库基础查询

    1.1文件存储 对数据的存储需求一直存在.数据保存的方式,经历了手工管理.文件管理,数据库管理阶段. 文件存储方式保存数据的弊端: 1.缺乏对数据的整体管理,数据不便修改: 2.不利于数据分析和共享; ...

  7. Web阶段--Oracle数据库基础知识点

    Web阶段–Oracle数据库基础知识点 一.数据库 1.定义 是一个数据存储管理的软件,全称rdbms(关系数据库管理系统),简称数据库(db) 2.为什么需要应用数据库? 1.现有文本文件存放数据 ...

  8. oracle运行原理ppt,oracle数据库基础培训PPT

    PPT内容 这是一个oracle数据库基础培训PPT,主要介绍了描述 Oracle 服务器的体系结构及其主要构件.列举用户连接到 Oracle 实例所涉及的结构等内容. Oracle数据库维护培训胶片 ...

  9. Oracle数据库基础知识点大全(一)

    Oracle数据库基础知识点大全 一.数据库基本概念 E-R模型 数据库对象 二:标准SQL包含了4种基本的语句类别 三:DML语句(数据操作语句) 数字和日期使用的数学表达式 常用 where 查询 ...

最新文章

  1. OpenCV图像旋转的原理与技巧
  2. Android官方技术文档翻译——Ant 任务
  3. 在centos7升级nodejs
  4. 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
  5. Scala特质trait具备Java中类和接口的功能
  6. ad如何镜像器件_使用 Dockerfile 制作镜像
  7. jieba分词_wordcloud词云美化——jieba结巴中文分词(将长句拆分)
  8. 一文快速探索视频用户网络画像与应用
  9. 人生每一件事都是为自己而做
  10. 数学,远比你想象的重要!
  11. 万字长文带你回顾Java集合框架
  12. 转个x64的Devcon
  13. ccs加载out文件,TI CCS3.3 out文件转bin文件说明
  14. 嵌入式硬件设计:SoC开发、电源设计、人机交互设计
  15. ISAPI概述(转)
  16. UIWebView加载本地HTML文件
  17. Redisson(1)分布式锁——如何解决死锁问题
  18. 如何通过数据找到影响用户留存的关键因素
  19. 互联网快讯:晋江文学城将实施分年龄阅读推荐体系;三星SDI进军美国市场;猿辅导推出教育科技新品牌“飞象星球”
  20. 微软云-ASR容灾技术经验分享

热门文章

  1. 电脑怎么python转行_零基础转行DA系列|一周Python for Data Science入门
  2. JAVA复习5(集合——ArrayList)
  3. win10系统中环境变量path变成一行显示(配置环境)
  4. mysql 演示吧_postgreSQL常用命令
  5. palapa php,有什么办法可以在Android上运行PHP
  6. c高级语言程序设计B试题,2019-2010-2-《高级语言程序设计(C)》期末考试-题
  7. php get_token_all函数,pimcore getObjectByToken函数PHP对象注入漏洞
  8. visual studio可以开发python吗_Visual Studio上开发Python六大功能
  9. 科普漫画 | 沙子如何变成芯片?
  10. 一文通吃所有整流滤波电路