子查询

子查询所要解决的问题是不能一步求解,需要两步或者多步求解的类型

注意的问题:

1、括号

2、合理的书写风格

3、可以在主查询的where select having from后面放置子查询

4、不可以在group by后面放子查询

5、强调from后面的子查询

(重要)---查询员工信息:员工号  姓名  薪水

select * from ( select empno,ename,sal from emp );

---查询员工信息:员工号  姓名  薪水  年薪

select * from ( select empno,ename,sal,sal*12 annlsal from emp );

6、主查询和子查询可以不是同一张表;只要子查询返回的结果主查询可以使用即可

查询部门名称是sales的员工的信息

select  e.*  from emp where e.deptno= (select * from dept where dname='sales' )------------子查询

select  e.*  from emp e,dept d where e.deptno=d.deptno and d.dname='sales'----------------多表查询

理论上使用多表查询比子查询快

7、一般不在子查询中使用order by;但top-N分析问题中,必须对子查询排序

8、子查询(内查询)在主查询之前一次执行完成,子查询的结果被主查询使用(外查询):一般先执行子查询,再执行主查询;但相关子查询例外

9、子查询分为:单行子查询和多行子查询

单行子查询只能使用单行操作符 多行子查询只能使用多行操作符

多行子查询操作符:

in             等于列表中的任何一个

any          和子查询返回的任意一个值比较

select * from emp where sal > (select min(sal) from emp where deptno=30)

=select * from emp where sal > any (select sal from emp where deptno=30)

all            和子查询返回的所有值比较

select * from emp where sal > (select max(sal) from emp where deptno=30)

=select * from emp where sal > all(select sal from emp where deptno=30)

10、注意子查询的null

not in 子查询中不能有空值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 查询是数据的一个重要操作。用户发送查询请求,经编译软件变异成二进制文件供服务器查询,后返回查询结果集给用户,查询会...
    产品小正阅读 1,426评论 0 2
  • 幕课oracle学习笔记 --!!!scott用户 --一.分组查询 --1.常用的分组函数:AVG(平均数),S...
    xiaoxiao苏阅读 1,284评论 0 5
  • 5.多表查询 多表查询 目的:从多张表获取数据 前提:进行连接的多张表中有共同的列 等连接 通过两个表具有相同意义...
    乔震阅读 1,291评论 0 0
  • 1. select * from emp; 2. select empno, ename, job from em...
    海纳百川_4d26阅读 1,932评论 0 4
  • 投我以木瓜,报之以琼琚。匪报也,永以为好也!投我以木桃,报之以琼瑶。匪报也,永以为好也!投我以木李,报之以琼玖。匪...
    赵莲贵阅读 1,999评论 6 17