Oracle的sql语句练习题含答案

emp.deptno(+)=dept.deptno group by dept.deptno,dept.dname,dept.loc

--42.列出各种工作的最低工资

select job, min(sal + nvl(comm, 0)) \最低工资\ --43.列出各个部门的MANAGER(经理)的最低薪金

select min(sal + nvl(comm,0)) from emp where upper(job) = 'MANAGER' group by deptno; --显示部门名称

select dname, min(sal + nvl(comm,0)) from emp, dept where emp.deptno = dept.deptno and upper(job) = 'MANAGER' group by dname;

--44.列出所有员工的年工资,按年薪从低到高排序

select ename, to_char((sal+nvl(comm,0))*12, '9999,9999.00') \年工资\ --45.显示各部门员工薪金最高的前2名

select * from (select ename, deptno, sal, row_number() over(partition by deptno order by sal desc) r from emp ) where r <=2

--46.显示薪金最高的3位员工

select * from (select ename, sal,dense_rank() over(order by sal desc) r from emp) where r <=3; --47.创建表myemp和emp表具有相同的结构和记录。 create table myemp as select * from emp; --48.给myemp的empno列添加主建约束。

alter table myemp add constraint pk primary key(empno); --49.给myemp添加一条记录。

insert into myemp values(1,'a','ab',999999,to_date('2008-9-9','yyyy-mm-dd'),5000,1000,30); --50.给myemp添加一条记录只有empno,ename,mgr,sal,deptno有值,其他列为空。 insert into myemp(empno,ename,mgr,sal,deptno) values(20,'aa',30,999999,20); --51.显示所有薪金高于各自部门平均薪金的人。(关联子查询)

select e.ename, e.deptno, e.sal from emp e where e.sal>(select avg(sal) from emp p where e.deptno=p.deptno);

--52.给所有10部门的经理(MANAGER)和20部门的职员(CLERK),增加薪金10%。

update emp set sal=sal*(1+0.1) where (deptno=10 and upper(job)='MANAGER') or(deptno=20 and upper(job)='CLERK');

--53.删除DEPT中没有员工的部门。

delete from dept where deptno not in(select distinct deptno from emp); --54.删除雇佣年限低于20年的员工。

delete from

>>灞曞紑鍏ㄦ枃<<
12@gma联系客服:779662525#qq.com(#替换为@)