一、实验目的
1.掌握SELECT语句的多表连接查询。
2.掌握SELECT语句的子查询。
二、实验内容
1.根据Oracle数据库scott方案下的emp表和dept表,完成下列操作:
(1)查询所有工种为CLERK的员工的姓名及其部门名称。
(2)查询所有部门及其员工信息,包括那些没有员工的部门。
(3)查询所有员工及其部门信息,包括那些还不属于任何部门的员工。
(4)查询在SALES部门工作的员工的姓名信息。
(5)查询所有员工的姓名及其直接上级的姓名。
(6)查询入职日期早于其上级领导的所有员工的信息。
(7)查询从事同一种工作但不属于同于部门的员工信息。
(8)查询10号部门员工及其领导的信息。
(9)使用UNION将工资大雨2500的雇员信息与工作为ANALYST的雇员信息合并。
(10)通过INTERSECT集合运算,查询工资大于2500,并且工作为ANALYST的雇员信息。
(11)使用MINUS集合查询工资大于2500。但工作不是ANALYST的雇员信息。
(12)查询工资高于公司平均工资的所有员工信息。
(13)查询与SMITH员工从事相同工作的所有员工信息。
(14)查询工资比SMITH员工工资高的所有员工信息。
(15)查询比所有在30号部门中工作的员工的工资都高的员工姓名和工资。
(16)查询部门人数大于5的部门的员工信息。
(17)查询所有员工工资都大于2000的部门的信息。
(18)查询人数最多的部门信息。
(19)查询至少有一个员工的部门信息。
(20)查询工资高于本部门平均工资的部门信息。
(21)查询工资高于本部门平均工资的员工信息及其部门的平均工资。
(22)查询每个员工的领导所在部门的信息。
(23)查询平均工资低于2000的部门及其员工信息。
三、实验环境
虚拟机下的windows xp和oracle 10g。
四、实验步骤
(1)查询所有工种为CLERK的员工的姓名及其部门名称。
(2)查询所有部门及其员工信息,包括那些没有员工的部门。
(3)查询所有员工及其部门信息,包括那些还不属于任何部门的员工。
(4)查询在SALES部门工作的员工的姓名信息。
(5)查询所有员工的姓名及其直接上级的姓名。
(6)查询入职日期早于其上级领导的所有员工的信息。
(7)查询从事同一种工作但不属于同于部门的员工信息。
(8)查询10号部门员工及其领导的信息。
(9)使用UNION将工资大于2500的雇员信息与工作为ANALYST的雇员信息合并。
(10)通过INTERSECT集合运算,查询工资大于2500,并且工作为ANALYST的雇员信息。
(11)使用MINUS集合查询工资大于2500。但工作不是ANALYST的雇员信息。
(12)查询工资高于公司平均工资的所有员工信息。
(13)查询与SMITH员工从事相同工作的所有员工信息。
(14)查询工资比SMITH员工工资高的所有员工信息。
(15)查询比所有在30号部门中工作的员工的工资都高的员工姓名和工资。
(16)查询部门人数大于5的部门的员工信息。
(17)查询所有员工工资都大于2000的部门的信息。
(18)查询人数最多的部门信息。
(19)查询至少有一个员工的部门信息。
(20)查询工资高于本部门平均工资的部门信息。
(21)查询工资高于本部门平均工资的员工信息及其部门的平均工资。
(22)查询每个员工的领导所在部门的信息。
(23)查询平均工资低于2000的部门及其员工信息。
五、总结
(说明实验过程中遇到的问题及解决办法;新发现或个人的收获;未解决/需进一步研讨的问题或建议新实验方法等)
1、
SQL> select ENAME,DEPTNO
2 from scott.emp
3 where job=’CLERK’;
2、
select dname,ename
from scott.dept LEFT JOIN scott.emp
ON dept.deptno=emp.deptno;
3、
select ename,dname
from scott.dept,scott.emp
where dept.deptno(+)=emp.deptno;
4、
select ename,dname
from scott.emp e,scott.dept d
where d.dname=’SALES’ and d.deptno = e.deptno;
select ename
from scott.emp where deptno in (select deptno from scott.dept where dname=’SALES’);
5、
select a.ename,b.ename as mrgname
from scott.emp a,scott.emp b
where a.mgr=b.empno;
select a.ename,b.ename as mrgname
from scott.emp a,scott.emp b
where a.mgr=b.empno(+);
6、
select a.* from scott.emp a,scott.emp b
where a.mgr=b.empno AND a.hiredate