Oracle-DQL-子查询&联合查询(集合操作)
目录
内容
1、子查询
-
格式
SELECT (子查询) FROM (子查询) WHERE (子查询);
-
子查询结果
- 单行单列(单值)
-
可以作为条件
-
示例:查询和’SMITH’同部门的员工姓名,工资,部门号
SELECT ENAME, SAL, DEPTNO WHERE DEPTNO = ( SELECT DEPTNO FROM EMP WHERE ENAME = 'SMITH' );
-
- 多行一列(相同类型集合)
-
可以作为条件,通常和in、some/any、all一起使用
-
示例:查询最低工资低于2000的部门及其员工信息
select d.deptno, d.dname, d.loc, e.* from dept d left join emp e on d.deptno = e.deptno where d.deptno in ( select deptno from emp group by deptno having avg(sal) < 2000 );
-
- 一行或者多行多列(查询集)
-
通常为一个’表’查询
-
示例:查询各个部门的详细信息以及部门人数、部门平均工资
select d.deptno, d.dname, d.loc ,e1.num , e1.avgsal from dept d left join ( select deptno, count(empno) num, avg(sal) avgsal from emp group by deptno ) e1 on d.deptno = e1.deptno;
-
- 单行单列(单值)
2、联合查询(集合操作)
一般用于表结构相同的表之间的数据统计,使用场景相对较少,这里不详细介绍,感兴趣的去查阅相关文档。
2.1、union、union all
- unoin:把2个或者以上的表查询结果堆叠,去重且排序
- UNION ALL:把2个或者以上的查询结果堆叠
- 注意事项:要查询的字段数量和数据类型必须一致
2.2、intersect
- INSERSECT 用于求交集
2.3、minus
- MINUS求差集
后记 :
所有数据库测试如果没有明确指定,都是基于scott用户下默认4个表。
本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785。
前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
后端JAVA源代码地址:https://gitee.com/gaogzhen/JAVA