Oracle上机练习题(二)

试卷总分:100

答题时间:240分钟

一、根据scott账号的下各个表,完成如下SQL语句题

1.

列出至少有一个雇员的所有部门[3分]

select distinct dname from dept where deptno in(select distinct deptno from emp);

2.

列出薪金比"SMITH"多的所有雇员[3分]

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

3.

列出入职日期早于其直接上级的所有雇员[3分]

select ename from emp where hiredate<(select hiredate from emp where empno = E.MGR);

4.

找员工姓名和直接上级的名字[3分]

select emp,ename as 员工姓名,MGR,ename as 经理姓名 from emp,(select ename,empno from emp) MGR where emp.MGR=MGR.EMPNO(+);

5.

显示部门名称和人数[3分]

select dname 部门名称, cou 人数 from dept d,(select deptno,count(empno) cou from emp group by deptno) e where d.deptno=e.deptno;

6.

显示每个部门的最高工资的员工[3分]

select * from emp where (deptno,sal) in (select deptno,max(sal) from emp group by deptno);

7.

显示每个部门的工资前2名的员工[3分]

select ename,sal,deptno from emp e where (select count(empno) from emp where deptno=e.deptno and sal>e.sal)<=1;

8.

显示出和员工号7369部门相同的员工姓名,工资[3分]

select ename,sal from emp where deptno=(select deptno from emp where empno=7369);

9.

显示出和姓名中包含"W"的员工相同部门的员工姓名[3分]

select ename from emp where deptno=(select deptno from emp where ename like '%W%');

10.

显示出工资大于平均工资的员工姓名,工资[3分]

select ename,sal from emp where sal>(select avg(sal) from emp);

11.

显示出工资大于本部门平均工资的员工姓名,工资[3分]

select ename,sal from emp e where sal>(select avg(sal) from emp where deptno=e.deptno);

12.

显示员工"KING"所管理的员工姓名[3分]

select ename from emp where mgr=(select empno from emp where ename='KING');

13.

显示每位经理管理员工的最低工资,及最低工资者的姓名[3分]

select sal,ename from emp where(mgr,sal) in (select mgr,min(sal) from emp group by mgr);

14.

显示比工资最高的员工参加工作时间晚的员工姓名,参加工作时间[3分]

select ename,hiredate from emp where hiredate>(select hiredate from emp where sal=(select max(sal) from emp));

15.

显示出平均工资最高的的部门平均工资及部门名称[3分]

select avg(sal),dname from emp e,dept d where e.deptno=d.deptno group by e.deptno,dname having avg(sal)=(select max(avg(sal)) from emp group by deptno);

16.

显示平均工资为>2000的职位[3分]

select job,avg(sal) from emp group by job having avg(sal)>2000;

17.

计算工资在2000以上,各种职位的平均工资大于3000的职位及平均工资[3分]

select job,avg(sal) from emp where sal>2000 group by job having avg(sal)>3000;

18.

找每个部门的最高和最低的工资[3分]

select deptno,max(sal),min(sal) from emp group by deptno;

19.

找每个部门中每种职位的最高和最低的工资[3分]

select deptno,job,max(sal),min(sal) from emp group by deptno,job;

20.

显示出工作名称(job)中包含"MAN"的员工平均工资,最高工资,最低工资及工资的和[3分]

select avg(sal),max(sal),min(sal),sum(sal) from emp where job like '%MAN%';

21.

显示出20号部门的员工人数[3分]

select count(1) from emp where deptno=20;

22.

显示出平均工资大于2000的部门名称及平均工资[3分]

select dname,avg(sal) from emp,dept where emp.deptno=dept.deptno group by dname having avg(sal)>2000;

23.

显示每个部门每种工作平均工资大于2500的部门及工作[3分]

select deptno,job from emp group by deptno,job having avg(sal)>2500;

24.

显示出工作名称中包含"MAN",并且平均工资大于1000的工作名称及平均工资[3分]

select job,avg(sal) from emp where job like '%MAN%' group by job having avg(sal)>1000;

25.

显示出平均工资最高的的部门平均工资[3分]

select max(avg(sal)) from emp group by deptno;

26.

列出最低工资大于1500的各种工作[3分]

select job,min(sal) from emp group by job having min(sal)>1500;

27.

列出各部门的员工数量及平均工作年限[3分]

select count(empno),avg(months_between(sysdate,hiredate)/12) from emp group by deptno;

二、按照以下题意完成操作。

请按照如下表格式,按照要求操作数据:

student --学生表

xh char(4), --学号

xm varchar2(10), --姓名

sex char(2), --性别

birthday date, --日期

sal number(7,2) --奖学金

studentcid number(2) --学生班级号

班级class

classid number(2), --班级编号

cname varchar2(20) --班级名字

ccount number(3) --班级人数

1.

添加三个班级信息为:
 1,JAVA1班,null 
 2,JAVA2班,null 
 3,JAVA3班,null[1分]

insert into class values(1,'Java1班',null);
insert into class values(2,'Java2班',null);
insert into class values(3,'Java3班',null);

2.

添加学生信息'A001','张三','男','01-5月-05',100,Java1班[1分]

insert into student values('A001','张三','男','01-5月-05',10,1);

3.

修改ORACLE的默认时间格式为:'yyyy-mm-dd' 
 添加学生信息如下:'A002','MIKE','男','1905-05-06',10[1分]

alter session set nls_date_format='yyyy-mm-dd';
insert into student values('A002','MIKE','男','1905-05-06',10,1);

4.

插入部分学生信息:'A003','JOHN','女'[1分]

insert into student(xh,xm,sex) values('A003','JOHN','女');

5.

将A001学生性别修改为‘女’[1分]

update student set sex='女' where xh='A001';

6.

将A001学生信息修改如下:性别为男,生日设置为1980-04-01[1分]

update student set sex='男',birthday='1980-04-01' where xh='A001';

7.

将生日为空的学生班级修改为Java3班[1分]

update student set classid=3 where birthday is null;

8.

请使用一条SQL语句,使用子查询,更新班级表中每个班级的人数字段[3分]

update class set ccount=(select count(1) from student where ccount=class.studentcid);

三、按照以下题意,完成SQL语句操作。

建立以下表

CREATE TABLE copy_emp (

empno number(4),

ename varchar2(20),

hiredate date default sysdate ,

deptno number(2),

sal number(8,2));

1.

表copy_emp中插入数据,要求sal字段插入空值,部门号50,参加工作时间为2000年1月1日,其他字段随意[1分]

insert into copy_emp(empno,ename,hiredate,deptno,sal) values(1,'a','01-1月-00',50,null);

2.

表copy_emp中插入数据,要求把emp表中部门号为10号部门的员工信息插入[1分]

insert into copy_emp(empno,ename,hiredate,deptno,sal) select empno,ename,hiredate,deptno,sal where deptno=10;

3.

修改copy_emp表中数据,要求10号部门所有员工涨20%的工资[1分]

update copy_emp set sal=sal*1.2 where deptno=10;

4.

修改copy_emp表中sal为空的记录,工资修改为平均工资[1分]

update copy_emp set sal=(select avg(sal) from copy_emp) where sal is null;

5.

工资为平均工资的员工,工资修改为空,参加工作时间修改为默认值[1分]

update copy_emp set='',hiredate=default where sal=(select avg(sal) from copy_emp);

6.

另外打开窗口2查看以上修改[1分]

sqlplus;

7.

执行commit,窗口2中再次查看以上信息[1分]

commit;

8.

删除工资为空的员工信息[1分]

delete from copy_emp where sal is null;

9.

执行rollback[1分]

rollback;

Oracle数据库上机练习2相关推荐

  1. oracle数据安全管理实验,第四次Oracle数据库上机实验-bistu

    <第四次Oracle数据库上机实验-bistu>由会员分享,可在线阅读,更多相关<第四次Oracle数据库上机实验-bistu(3页珍藏版)>请在人人文库网上搜索. 1.BIS ...

  2. oracle数据库期末上机题,oracle数据库期末考试试题及复习资料

    <oracle数据库期末考试试题及复习资料>由会员分享,可在线阅读,更多相关<oracle数据库期末考试试题及复习资料(16页珍藏版)>请在人人文库网上搜索. 1.oracle ...

  3. 轻松学编程--轻松学Oracle数据库(附光盘)

    查看书籍详细信息: 轻松学编程--轻松学Oracle数据库(附光盘) 编辑推荐 <轻松学Oracle数据库>本书中引用了大量的动手实践案例来讲解Oracle数据库中的各种知识,使读者能够更 ...

  4. oracle 慕课课程_“慕课”在Oracle数据库课程中的应用探讨

    [摘 要] 在分析近年来集宁师范学院Oracle数据库课程教学现状."慕课"教学模式优势的基础上,探讨了通过在线平台引入"慕课"进行混合式教学的教学方法,实现翻 ...

  5. Oracle数据库基础教程

    查看书籍详细信息: Oracle数据库基础教程 编辑推荐 体现作者多年的数据库管理与开发经验,结合大量实用技巧,重点突出,便于灵活掌握,提供典型应用实例与上机实验,分析详细,实用性强. 本书是作者结合 ...

  6. oracle实验六杨艳华_工作报告之oracle数据库实验报告

    oracle 数据库实验报告 [篇一:大型数据库 oracle 10g 实验教程实验五实验报 告] 集美大学计算机工程学院实验报告 课程名称: oracle 10g 数据库基础教程 指导教师:杨艳华 ...

  7. Oracle数据库管理员认证三大认证的区别和意义

    区别A:认证获得方式 *OCA:不需要原厂培训,需要通过两门考试 *OCP :OCA与OCP认证可以一起考试,通过OCP至少需要参加一门原厂培训或WDP,通过三门考试 *OCM:需要至少再参加两门原厂 ...

  8. Oracle数据库导入导出命令!

    oracle数据库导入导出命令! 转自:http://www.cnblogs.com/fjfzhkb/archive/2007/09/03/879807.html Oracle数据导入导出imp/ex ...

  9. oracle数据库 export,转:Oracle数据库的备份方法——使用export作为备份

    5.使用export作为备份策略 5.1 export的命令选项说明 Oracle数据库的exp工具提供tables.users.full database.tablespace四种级别的导出方式,把 ...

最新文章

  1. 遇事不责怪别人,换位思考能成全更好的自己
  2. LeetCode简单题之公平的糖果交换
  3. MySQL排错工具perror
  4. cent0S7根分区扩容以及问题解决
  5. 通过命令行形式编译QT源程序
  6. mysql自增主键归零的方法
  7. Java黑皮书课后题第7章:*7.1(指定等级)编写一个程序读入学生成绩,得到最高分best,然后根据下面的规则给出等级值。程序提示用户输入学生总数,然后提示用户输入所有的分数,最后显示等级给出结论
  8. 类属性-类属性的定义及使用
  9. jQuery学习笔记(二)—— 操作DOM元素
  10. 深入理解 操作系统 SJF算法(以洛谷P1223题为例)
  11. 矢量算法java,矢量线的一种栅格化算法
  12. onethink中的用户登录session签名
  13. 通过ServerGuide 装 服务器 raid1
  14. win7计算机共享设置密码,如何为Win7旗舰系统的共享文件夹设置密码
  15. 自定义权限修改弹框_微信小程序自定义授权弹框
  16. 移动物联网怎么激活?开户流程是怎么样的
  17. 最新GraphPad Prism Mac直装版(医学绘图软件)v9.4.1
  18. Linux meld安装
  19. 星特朗望远镜怎么样_星特朗天文望远镜怎么样|使用体验
  20. 使用nginx实现请求转发的功能

热门文章

  1. 图片怎么批量压缩?这两个方法有掌握吗
  2. 考勤系统(员工打卡)
  3. PIESDKDoNet二次开发配置注意事项
  4. EXCEL2016学生表两列名字按相同排序,对比期中期末考试选出进步学生
  5. Android 自定义控件之画篮球
  6. php工单流程图,工单管理系统的业务流程是怎样的?
  7. 看一个师兄的操作系统视频有感
  8. 数据结构与算法真的那么重要么?
  9. C语言例题——简易计算器
  10. Matlab多重积分的两种实现【从六重积分到一百重积分】