Oracle笔记11——Oracle集合运算
2021/10/29 19:11:21
本文主要是介绍Oracle笔记11——Oracle集合运算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.创建员工历史岗位表 emp_jobhistory: CREATE TABLE emp_jobhistory( id NUMBER,--流水号 empno NUMBER,--员工编号 job VARCHAR2(9),--岗位 begindate DATE,--开始日期 sal Number(7,2)--在该岗位时工资 ) 2.插入如下数据: INSERT INTO emp_jobhistory VALUES(1,7839,'TRAINEE','17-11月-81',500); INSERT INTO emp_jobhistory VALUES(2,7839,'SALESMAN','17-2月-82',1800); INSERT INTO emp_jobhistory VALUES(3,7839,'CLERK','17-2月-83',2000); INSERT INTO emp_jobhistory VALUES(4,7839,'SALESMAN','17-2月-85',1800); INSERT INTO emp_jobhistory VALUES(5,7839, 'MANAGER','17-2月-87',3000); commit;
一、联合运算(UNION)
1.去重复
2.默认第一列升序排序
3.所有SQL语句的列数一致、类型一致、列名可以不一致,默认使用第一个SQL语句作为列名
4.每个SQL语句不能有自己的order by语句
1.查询编号为7839的员工当前工资、岗位及历史工资、岗位? SELECT * FROM emp WHERE empno = 7839; --7839的员工当前工资、岗位 SELECT * FROM emp_jobhistory WHERE empno = 7839;--7839的员工历史工资、岗位 --多表连接(不适用) SELECT * FROM emp e,emp_jobhistory h WHERE e.empno = h.empno; --联合运算 SELECT empno 雇员编号,sal 工资,job 岗位 FROM emp WHERE empno = 7839 --7839的员工当前工资、岗位 1条数据 UNION SELECT empno,sal,job FROM emp_jobhistory WHERE empno = 7839 ORDER BY 岗位;--7839的员工历史工资、岗位 5条数据
二、完全联合运算(UNION ALL)
1.不去重复
2.不排序
3.所有SQL语句的列数一致、类型一致、列名可以不一致,默认使用第一个SQL语句作为列名
4.每个SQL语句不能有自己的order by语句
5.完全联合运算(UNION ALL)效率高于联合运算(UNION),因为UNION ALL不需要去重,也不需要排序
1.查询编号为7839的员工当前工资、岗位及历史工资、岗位,要求不要去除重复数据 --完全联合运算 SELECT empno 雇员编号,sal 工资,job 岗位 FROM emp WHERE empno = 7839 --7839的员工当前工资、岗位 1条数据 UNION ALL SELECT empno,sal,job FROM emp_jobhistory WHERE empno = 7839 ORDER BY 岗位;--7839的员工历史工资、岗位 5条数据
三、相交运算(INTERSECT)
取多个SQL语句之间的共有数据
1.查询哪些员工做过岗位调动? SELECT empno FROM emp--所有的员工 INTERSECT SELECT empno FROM emp_jobhistory;--调用过的员工编号
四、相减运算(MINUS)
取A-B的数据,即第一个SQL有,第二个SQL没有的数据
1.查询哪些员工没有做过岗位调动? SELECT empno FROM emp--所有的员工 MINUS SELECT empno FROM emp_jobhistory;--调用过的员工编号
这篇关于Oracle笔记11——Oracle集合运算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享