您的位置:首页 > 数据库 > Oracle

ORACLE 06 SELECT高级查询

2017-07-11 11:05 501 查看
一、实验目的

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: