ORACLE 06 SELECT高级查询

来源:互联网 发布:中国单片机公共实验室 编辑:程序博客网 时间:2024/05/14 21:48

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