oracle 学习集合运算、习题答案

oracle 学习笔记

–集合查询

CREATE TABLE emp_jobhistory(
id NUMBER, –流水号
empno NUMBER, –员工编号
job VARCHAR2(9), –岗位
begindate DATE, –开始日期
sal Number(7,2) –在该岗位时工资
);
drop table emp_jobhistory;

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);

select * from emp_jobhistory;

–联合查询 union , union all

select sal,job from emp where empno=7839
union all
select sal,job from emp_jobhistory;

练习1
• 1.分别使用联合运算及完全联合运算完成,按照
时间升序顺序,查询员工7839的工作岗位列表。
select hiredate hiretime,job job from emp where empno=7839
union
select begindate,job from emp_jobhistory where empno=7839 order by hiretime;

select hiredate hiretime,job job from emp where empno=7839
union all
select begindate,job from emp_jobhistory where empno=7839 order by hiretime;
• 2.使用多表连接,查询每个部门的部门编号,部
门人数,没有人数的部门显示0。
select d.deptno,count(empno) from emp e,dept d
where e.deptno(+)=d.deptno
group by d.deptno;
• 3.使用联合运算,查询每个部门的部门编号,部
门人数,没有人数的部门显示0。
select deptno,0 from dept where deptno not in (select distinct deptno from emp)
union
select deptno,count(empno) from emp group by deptno;
• 4.使用联合运算,查询10号部门及20号部门的员
工姓名,部门编号。
select ename 姓名,deptno 部门编号 from emp where deptno=10
union all
select ename,deptno from emp where deptno=20 order by 部门编号;

select deptno 部门编号,null 地点,job 职位,hiredate 雇用时间 from emp
union
select deptno,loc,null,null from dept;


–相交运算

intersect

• 例:查询哪些员工做过岗位调动?
select empno from emp
intersect
select empno from emp_jobhistory;


–相减运算

minus

• 例:查询哪些员工没有做过岗位调动?
select empno from emp
minus
select empno from emp_jobhistory;

alter table emp
add constraint df_ename default ename ’ ‘;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值