一、實驗目的
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