实验六高级查询

发布 2021-05-08 19:31:28 阅读 5001

实验目的与要求:

1.掌握select高级查询语句。

2.掌握子查询的使用。

实验内容:使用scott/tiger用户下的emp表和dept表完成下列练习,表的结构说明如下。

emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)

dept部门表(deptno部门编号/dname部门名称/loc地点)

工资 = 薪金 + 佣金。

1.列出至少有一个员工的所有部门。

sql> select dname from dept where deptno in(select deptno from emp);

2.列出薪金比“smith”多的所有员工。

select * from emp

where sal>(select sal from emp where ename='smith');

3.列出所有员工的姓名及其直接上级的姓名。

select from emp a,emp b where 内连接)

4.列出受雇日期早于其直接上级的所有员工。

select ename from emp a where hiredate<(select hiredate from emp where empno=

5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

select dname,ename from dept left join emp on

select dname,ename from dept a,emp b where =

6.列出所有“clerk”(办事员)的姓名及其部门名称。

select dname,ename from dept a,emp b where and job='clerk';

7.列出最低薪金大于1500的各种工作。

select job,min(sal) msal from emp

group by job h**ing min(sal)>1500;

8.列出在部门“sales”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

select ename from emp where deptno=(select deptno from dept where dname='sales');

9.列出薪金高于公司平均薪金的所有员工。

select ename from emp where sal>(select **g(sal) from emp);

10.列出与“scott”从事相同工作的所有员工。

select * from emp where job=(select job from emp where ename='scott');

11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

select * from emp where sal in

select sal from emp where deptno=30);

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

select * from emp where sal>all

select sal from emp where deptno=30);

13.列出在每个部门工作的员工数量、平均工资和平均服务期限。

select deptno,count(*)trunc(**g(sal+nvl(comm,0)))**gsal,trunc(**g(sysdate-hiredate)) **gday (此处没有“,”

from emp group by deptno;

14.列出所有员工的姓名、部门名称和工资。

select ename,dname,sal+nvl(comm,0) from emp,dept where

15.列出从事同一种工作但属于不同部门的员工的一种组合。

select distinct from emp a,emp b

where ( order by

16.列出所有部门的详细信息和部门人数。

select dept.*,select count(*)from emp group by deptno h**ing deptno= tot

from dept;

17.列出各种工作的最低工资。

select job,min(sal+nvl(comm,0)) from emp group by job;

18.列出各个部门的manager(经理)的最低薪金。

select min(sal) from emp where job='manager' ;

19.列出所有员工的年工资,按年薪从低到高排序。

select ename,(sal+nvl(comm,0))*12 tot from emp order by tot;

20.列出比部门在20工作的所有员工的工资都高的员工信息。

下面是老师的答案!

1.列出至少有一个员工的所有部门。

select distinct dname from emp,dept where

或:select dname from emp,dept where group by dname h**ing count(*)1

2.列出薪金比“smith”多的所有员工。

select ename,sal from emp where sal>(select sal from emp where ename='smith')

3.列出所有员工的姓名及其直接上级的姓名。

select from emp shang,emp xia where

用自连接实现)

4.列出受雇日期早于其直接上级的所有员工。

select from emp s ,emp x where (>and (

5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

select from emp right join dept on

6.列出所有“clerk”(办事员)的姓名及其部门名称。

select from dept,emp where and 'clerk'

7.列出最低薪金大于1500的各种工作。

select job from emp group by job h**ing min(sal)>1500

8.列出在部门“sales”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

select ename from emp where deptno=(select deptno from dept where dname='sales')

9.列出薪金高于公司平均薪金的所有员工。

select ename,sal from emp where sal>(select **g(sal) from emp)

10.列出与“scott”从事相同工作的所有员工。

select ename,job from emp where job=(select job from emp where ename='scott')

11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

select ename,sal,deptno from emp where sal in (select sal from emp where deptno=30) and deptno<>30

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

select ename,sal from emp where sal>(select max(sal) from emp where deptno=30)

13.列出在每个部门工作的员工数量、平均工资和平均服务期限。

select deptno, count(*)**g(sal),**g(to_number(to_char(sysdate,'yyyy'))to_number(to_char(hiredate,'yyyy'))from emp group by deptno

14.列出所有员工的姓名、部门名称和工资。

select ename,dname,sal from emp,dept where and comm is null union

select ename,dname,sal+comm from dept,emp where and comm is not null

或:select ename,dname,nvl2(comm,sal+comm,sal) sal from emp,dept where

15.列出从事同一种工作但属于不同部门的员工的一种组合。

select from emp a,emp b

where and <>

实验7高级查询

一 实验目的与要求。1 熟练掌握使用t sql语句进行连接查询的方法。2 熟练掌握使用t sql语句进行嵌套查询的方法。二 实验内容与步骤。1 查询机械工程学院总分 mark 大于510分的学生学号 姓名 系部和选修课程的课程号及成绩。利用同等连接实现 2 实现上题 1 中的查询内容。利用内连接实现...

实验五高级查询

替换查询结果中的数据。casewhen 条件1 then 表达式1 when 条件2 then 表达式2 else 表达式n end例 查询score表sno,sname,degree列,对degree列按以下规则进行转换 若degree为90 100,替换为 优秀 若degree为80 89,替换...

实验四高级查询

一 实验目的。1.掌握sql的连接查询。2.熟悉sql的高级查询。二 实验环境。一台pc机,安装widows xp操作系统,oracle 10g或11g数据库软件。三 实验内容 1.列出至少有一个雇员的所有部门。2 列出薪金比 smith 多的所有雇员。3列出所有雇员的姓名及其上级的姓名。4列出入职...