一、实验目的 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