ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle笔记11——Oracle集合运算

2021-10-29 15:00:15  阅读:151  来源: 互联网

标签:11 empno jobhistory -- 岗位 笔记 7839 emp 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;--调用过的员工编号

 

标签:11,empno,jobhistory,--,岗位,笔记,7839,emp,Oracle
来源: https://www.cnblogs.com/lqh0904/p/15480586.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有