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;
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条数据
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条数据
1.查询哪些员工做过岗位调动? SELECT empno FROM emp--所有的员工 INTERSECT SELECT empno FROM emp_jobhistory;--调用过的员工编号
1.查询哪些员工没有做过岗位调动? SELECT empno FROM emp--所有的员工 MINUS SELECT empno FROM emp_jobhistory;--调用过的员工编号