Oracle数据库机考实操试题(含详细答案解析)_第1页
Oracle数据库机考实操试题(含详细答案解析)_第2页
Oracle数据库机考实操试题(含详细答案解析)_第3页
Oracle数据库机考实操试题(含详细答案解析)_第4页
Oracle数据库机考实操试题(含详细答案解析)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle数据库机考实操试题(含详细答案解析)考试说明:本试题为Oracle实操机考题型,适配初级开发/运维岗位考核,总分100分,考试时长90分钟。试题涵盖基础语法、数据查询、多表关联、数据库对象、事务管理等核心实操内容,所有题目均可在Oracle11g/12C/19C版本正常执行。考前基础数据表说明:本次考试所有实操题基于以下三张业务表,考生需先执行建表、插入测试数据语句,再完成答题。PlainText

--员工表emp

CREATETABLEemp(

empnoNUMBER(4)PRIMARYKEY,--员工编号

enameVARCHAR2(20),--员工姓名

jobVARCHAR2(20),--岗位

mgrNUMBER(4),--直属领导编号

hiredateDATE,--入职日期

salNUMBER(7,2),--月薪

commNUMBER(7,2),--奖金

deptnoNUMBER(2)--部门编号

);

--部门表dept

CREATETABLEdept(

deptnoNUMBER(2)PRIMARYKEY,--部门编号

dnameVARCHAR2(20),--部门名称

locVARCHAR2(20)--办公地点

);

--工资等级表salgrade

CREATETABLEsalgrade(

gradeNUMBER(1)PRIMARYKEY,--工资等级

losalNUMBER(7,2),--最低薪资

hisalNUMBER(7,2)--最高薪资

);

--插入部门数据

INSERTINTOdeptVALUES(10,'财务部','北京');

INSERTINTOdeptVALUES(20,'技术部','上海');

INSERTINTOdeptVALUES(30,'销售部','广州');

INSERTINTOdeptVALUES(40,'人事部','深圳');

--插入员工数据

INSERTINTOempVALUES(7369,'张三','程序员',7902,TO_DATE('2020-02-15','YYYY-MM-DD'),8000,NULL,20);

INSERTINTOempVALUES(7499,'李四','销售专员',7698,TO_DATE('2019-05-20','YYYY-MM-DD'),7500,2000,30);

INSERTINTOempVALUES(7521,'王五','销售专员',7698,TO_DATE('2019-03-10','YYYY-MM-DD'),7200,1500,30);

INSERTINTOempVALUES(7566,'赵六','技术主管',7839,TO_DATE('2018-08-05','YYYY-MM-DD'),12000,NULL,20);

INSERTINTOempVALUES(7698,'孙七','销售经理',7839,TO_DATE('2017-11-12','YYYY-MM-DD'),15000,3000,30);

INSERTINTOempVALUES(7839,'周八','总经理',NULL,TO_DATE('2016-01-20','YYYY-MM-DD'),25000,NULL,10);

INSERTINTOempVALUES(7902,'吴九','架构师',7839,TO_DATE('2018-06-18','YYYY-MM-DD'),18000,NULL,20);

--插入工资等级数据

INSERTINTOsalgradeVALUES(1,5000,7000);

INSERTINTOsalgradeVALUES(2,7001,9000);

INSERTINTOsalgradeVALUES(3,9001,12000);

INSERTINTOsalgradeVALUES(4,12001,18000);

INSERTINTOsalgradeVALUES(5,18001,30000);

COMMIT;一、选择题(每题3分,共10题,总计30分)1.Oracle中用于模糊查询的通配符,代表任意单个字符的是()A.%  B._  C.*  D.?2.以下不属于Oracle聚合函数的是()A.SUM()  B.COUNT()  C.SUBSTR()  D.AVG()3.在Oracle中,查询结果去重使用的关键字是()A.UNIQUE  B.DISTINCT  C.REMOVE  D.CLEAR4.以下关于WHERE和HAVING子句说法正确的是()A.WHERE可以过滤分组后的数据B.HAVING可以单独使用,无需GROUPBYC.WHERE过滤分组前数据,HAVING过滤分组后数据D.两者功能完全一致,可随意替换5.Oracle中,ROUND(123.456,2)的执行结果是()A.123.45  B.123.46  C.123.4  D.1236.下列哪种事务操作可以永久保存数据修改()A.ROLLBACK  B.COMMIT  C.SAVEPOINT  D.SETTRANSACTION7.Oracle中,查询当前系统时间的函数是()A.NOW()  B.SYSDATE  C.CURRENT_DATE()  D.GETDATE()8.多表查询中,需要查询左表所有数据、右表匹配数据,无匹配则显示NULL的连接方式是()A.INNERJOIN  B.RIGHTJOIN  C.LEFTJOIN  D.FULLJOIN9.以下哪个语句可以修改表结构()A.UPDATE  B.ALTER  C.MODIFY  D.CHANGE10.Oracle中主键约束的核心特性是()A.允许为空、允许重复  B.不允许为空、不允许重复C.允许为空、不允许重复  D.不允许为空、允许重复二、实操查询题(每题8分,共5题,总计40分)1.查询所有技术部员工的员工编号、姓名、岗位、月薪、入职日期,按月薪降序排序。2.查询月薪在8000-15000之间,且无奖金的员工信息,显示姓名、岗位、月薪、部门编号。3.统计每个部门的员工人数、平均月薪、最高月薪、最低月薪,过滤出平均月薪大于8000的部门。4.通过多表关联查询,展示员工姓名、岗位、部门名称、办公地点、工资等级。5.查询所有员工的姓名、月薪,以及其直属领导的姓名、月薪(自连接查询)。三、数据库操作题(每题10分,共2题,总计20分)1.新增一张岗位表job,字段如下:岗位编号job_id(主键,数字2位)、岗位名称job_name(字符串20位,非空)、岗位描述job_desc(字符串100位)。并插入2条自定义测试数据。2.对emp表的ename字段创建普通索引,说明创建索引的作用;随后删除该索引。四、简答题(每题10分,共1题,总计10分)简述Oracle事务的四大特性,以及COMMIT、ROLLBACK的具体作用。参考答案及详细解析一、选择题答案及解析1.答案:B解析:Oracle模糊查询中,_代表任意单个字符,%代表任意多个字符;*和?不是Oracle标准通配符。2.答案:C解析:SUBSTR()是字符串截取单行函数,SUM求和、COUNT统计行数、AVG求平均值均为聚合函数。3.答案:B解析:DISTINCT关键字用于查询结果去重,UNIQUE为约束关键字,不用于查询去重。4.答案:C解析:WHERE在分组(GROUPBY)之前过滤原始数据,无法使用聚合函数;HAVING在分组之后过滤分组结果,支持聚合函数,必须配合GROUPBY使用。5.答案:B解析:ROUND函数为四舍五入保留指定位数小数,ROUND(123.456,2)保留两位小数,结果为123.46。6.答案:B解析:COMMIT提交事务,永久保存数据;ROLLBACK回滚事务,撤销所有未提交修改;SAVEPOINT为保存点,用于局部回滚。7.答案:B解析:Oracle查询系统时间用SYSDATE;NOW()、GETDATE()为MySQL、SQLServer函数,Oracle无此函数。8.答案:C解析:LEFTJOIN左连接,保留左表全部数据,右表无匹配数据填充NULL;RIGHTJOIN反之,INNERJOIN只保留匹配数据,FULLJOIN保留左右表所有数据。9.答案:B解析:ALTER语句用于修改表结构(新增字段、修改字段类型、删除字段等);UPDATE用于修改表数据,MODIFY是ALTER的子参数,非独立语句。10.答案:B解析:主键(PRIMARYKEY)=唯一约束+非空约束,字段值不能为空、不能重复,一张表只能有一个主键。二、实操查询题答案及解析1.参考答案:PlainText

SELECTe.empno,e.ename,e.job,e.sal,e.hiredate

FROMempe

JOINdeptdONe.deptno=d.deptno

WHEREd.dname='技术部'

ORDERBYe.salDESC;解析:需要关联部门表筛选部门名称,通过DESC实现月薪降序,默认升序可省略ASC。2.参考答案:PlainText

SELECTename,job,sal,deptno

FROMemp

WHEREsalBETWEEN8000AND15000

ANDcommISNULL;解析:NULL值判断必须用ISNULL,不能用=NULL;BETWEENAND包含区间首尾数值。3.参考答案:PlainText

SELECTdeptno,COUNT(empno)员工人数,ROUND(AVG(sal),2)平均月薪,MAX(sal)最高月薪,MIN(sal)最低月薪

FROMemp

GROUPBYdeptno

HAVINGAVG(sal)>8000;解析:按部门编号分组,聚合函数统计薪资数据,ROUND保留两位小数,分组后筛选使用HAVING。4.参考答案:PlainText

SELECTe.ename,e.job,d.dname,d.loc,s.grade

FROMempe

JOINdeptdONe.deptno=d.deptno

JOINsalgradesONe.salBETWEENs.losalANDs.hisal;解析:员工薪资匹配工资等级的区间范围,通过两张内连接实现三表关联查询。5.参考答案:PlainText

SELECTe.ename员工姓名,e.sal员工月薪,m.ename领导姓名,m.sal领导月薪

FROMempe

LEFTJOINempmONe.mgr=m.empno;解析:自连接将一张表作为员工表、领导表两张表使用,使用左连接保留总经理(无领导)的数据,避免数据丢失。三、数据库操作题答案及解析1.参考答案:PlainText

--创建岗位表

CREATETABLEjob(

job_idNUMBER(2)PRIMARYKEY,

job_nameVARCHAR2(20)NOTNULL,

job_descVARCHAR2(100)

);

--插入测试数据

INSERTINTOjobVALUES(1,'程序员','负责项目代码开发与调试');

INSERTINTOjobVALUES(2,'销售经理','负责销售团队管理与业务拓展');

COMMIT;解析:严格按照题目要求设置字段类型、长度及约束,非空字段插入数据时不可为空,操作后执行commit提交。2.参考答案:PlainText

--创建普通索引

CREATEINDEXidx_emp_enameONemp(ename);

--删除索引

DROPINDEXidx_e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论