Oracle试卷
一、使用scott/tiger用户下的emp表和dept表完成下列题目
(本题45分,每小题3分)
1.查看emp和dept的表结构以及所有的记录.
DESC emp; Select * from emp;
2.找出佣金高于薪金的员工姓名
select * from emp where comm>sal;
3.以首字母大写其余小写的方式显示所有员工的姓名
SQL>select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp;
4.找出不收取佣金或收取的佣金低于100的员工
select * from emp where comm is null or comm<100;
5.找出收取佣金的员工的不同工作
select distinct job from emp where comm is not null
6.列出所有雇员的雇员名称、部门名称和工资
select ename,dname,sal+nvl(comm,0) from emp,dept where emp.deptno=dept.deptno;
7.显示所有名字中第三个字母是a的雇员的名字
Select ename from emp where ename LIKE ‘—a%;
8.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序
select ename,job,sal from emp order by job desc,sal;
9.显示满10年服务年限的员工的姓名和受雇日期
Select ename,hiredate from emp where months_between(sysdate,hiredate)>=10*12;
10.列出薪金高于在SALES部门工作的所有员工的薪金的员工姓名和薪金
select * from emp where sal>all (select sal from emp where deptno=30);
11.列出与“MILLER”从事相同工作的所有员工
select * from emp where job=(select job from emp where ename='MILLER');
12.列出所有员工的姓名及其直接上级的姓名
select a.ename,b.ename from emp a,emp b w select ename,(select ename from emp where empno=a.m here a.mgr=b.empno(+);
13.列出各种工作职位的最低工资,且显示最低工资大于1500的记录
select job,min(sal) from emp group by job having min(sal)>1500 14.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于20
select * from emp where (deptno=10 and job=upper('manager')) o job=upper('clerk ')) or (job<>upper(‘manager’) and job<>upp sal>=2000)