Oracle SQL 基础综合试题(含详细答案解析)_第1页
Oracle SQL 基础综合试题(含详细答案解析)_第2页
Oracle SQL 基础综合试题(含详细答案解析)_第3页
Oracle SQL 基础综合试题(含详细答案解析)_第4页
Oracle SQL 基础综合试题(含详细答案解析)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

OracleSQL基础综合试题(含详细答案解析)适用场景:数据库入门考核、职场面试笔试、运维/开发基础测评考试时长:90分钟满分:100分一、单项选择题(共15题,每题2分,共30分)1.在Oracle中,以下哪个数据类型用于存储可变长度字符串,最大支持4000字节?()A.CHARB.VARCHAR2C.NCHARD.NVARCHAR22.Oracle中,用于去除字符串首尾空格的函数是()A.LTRIMB.RTRIMC.TRIMD.REPLACE3.以下关于WHERE和HAVING子句的说法,正确的是()A.WHERE可以过滤分组后的数据B.HAVING可以单独使用,无需GROUPBYC.WHERE在分组前过滤数据,HAVING在分组后过滤数据D.两者功能完全一致,可任意替换4.查询结果去重的关键字是()A.UNIQUEB.DISTINCTC.REMOVED.DELETE5.Oracle中,以下哪个语句可以实现事务提交?()A.SAVEPOINTB.ROLLBACKC.COMMITD.EXIT6.模糊查询中,匹配任意单个字符的通配符是()A.%B._C.*D.?7.以下不属于Oracle聚合函数的是()A.SUM()B.COUNT()C.SUBSTR()D.AVG()8.排序查询中,默认的排序方式是()A.降序DESCB.升序ASCC.随机排序D.无序排序9.截取字符串指定长度的函数是()A.INSTRB.SUBSTRC.CONCATD.LENGTH10.以下哪种索引是Oracle默认创建的主键索引类型?()A.位图索引B.唯一索引C.聚簇索引D.B树索引11.查询当前系统日期的正确语句是()A.SELECTDATEFROMDUAL;B.SELECTSYSDATEFROMDUAL;C.SELECTNOW()FROMDUAL;D.SELECTCURRENT_DATE()FROMDUAL;12.以下关于NULL值的描述,错误的是()A.NULL表示空值,不等于0和空字符串B.判断空值必须使用ISNULL/ISNOTNULLC.NULL参与运算,结果一定为NULLD.可以使用=NULL判断空值13.实现两张表左连接的关键字是()A.RIGHTJOINB.LEFTJOINC.INNERJOIND.FULLJOIN14.Oracle中,分页查询需要使用的伪列是()A.ROWNUMB.ROWIDC.IDD.INDEX15.修改表结构的SQL关键字是()A.UPDATEB.ALTERC.MODIFYD.CHANGE二、填空题(共10空,每空2分,共20分)1.Oracle中用于拼接两个字符串的函数是__________。2.分组查询必须使用的子句是__________。3.事务的四大特性分别是原子性、一致性、__________、持久性。4.将字符串转为大写的函数是__________,转为小写的函数是__________。5.多表查询中,只返回两张表匹配数据的连接方式是__________。6.删除表中所有数据且不记录日志的命令是__________。7.Oracle中,__________伪列用于标识数据行的物理存储地址。8.条件查询中,__________关键字用于判断字段值是否在指定区间内。三、简答题(共3题,每题5分,共15分)1.简述DELETE和TRUNCATE的区别。2.简述INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLJOIN的区别。3.简述ROWNUM和ROWID的区别。四、实操SQL编程题(共3题,共35分)基础数据表结构(答题统一使用该表)员工表:emp(emp_id,emp_name,dept_id,salary,hire_date,job)部门表:dept(dept_id,dept_name,location)字段说明:emp_id:员工编号(主键),emp_name:员工姓名,dept_id:部门编号,salary:薪资,hire_date:入职日期,job:岗位dept_id:部门编号(主键),dept_name:部门名称,location:部门地点1.编写SQL,查询所有薪资大于8000、入职时间在2020年及以后的员工姓名、薪资、入职日期。(10分)2.编写SQL,统计每个部门的员工人数、平均薪资、最高薪资、最低薪资,展示部门编号、部门人数、平均薪资、最高薪资、最低薪资,按员工人数降序排序。(12分)3.编写SQL,实现分页查询员工数据,查询第6-10条员工记录,展示员工编号、姓名、部门名称、薪资。(13分)完整答案及详细解析一、单项选择题答案及解析1.答案:B解析:VARCHAR2是Oracle专属可变长度字符串类型,最大存储4000字节;CHAR为固定长度字符串;NCHAR/NVARCHAR2为Unicode字符类型,主要存储中文。2.答案:C解析:LTRIM仅去除左侧空格,RTRIM仅去除右侧空格,TRIM可去除首尾所有空格,REPLACE为字符串替换函数。3.答案:C解析:WHERE执行于GROUPBY分组之前,用于过滤原始数据;HAVING执行于分组之后,用于过滤分组后的聚合结果,必须配合GROUPBY使用。4.答案:B解析:DISTINCT为SQL标准去重关键字,用于剔除查询结果中的重复数据。5.答案:C解析:COMMIT提交事务,ROLLBACK回滚事务,SAVEPOINT设置事务保存点。6.答案:B解析:模糊查询中,_匹配任意单个字符,%匹配任意0个或多个字符。7.答案:C解析:SUBSTR为字符串截取函数,属于单行函数;SUM、COUNT、AVG均为聚合函数(分组函数)。8.答案:B解析:ORDERBY默认升序(ASC),手动指定DESC为降序排序。9.答案:B解析:SUBSTR用于截取指定位置、指定长度的字符串;INSTR查询字符位置,LENGTH获取字符串长度,CONCAT拼接字符串。10.答案:D解析:Oracle主键默认创建B树索引,B树索引适用于等值、范围查询,是最常用的索引类型。11.答案:B解析:Oracle使用SYSDATE获取系统当前日期时间,DUAL是Oracle专属虚表,用于查询常量、函数结果。12.答案:D解析:NULL为空值,无法使用=、!=等比较运算符判断,必须使用ISNULL/ISNOTNULL。13.答案:B解析:LEFTJOIN左连接,以左表为基准,匹配右表数据;RIGHTJOIN以右表为基准。14.答案:A解析:ROWNUM为行号伪列,常用于Oracle分页查询;ROWID为数据物理地址伪列。15.答案:B解析:ALTER用于修改表结构(增删字段、修改字段类型);UPDATE用于修改表数据。二、填空题答案及解析1.CONCAT()解析:Oracle支持CONCAT函数拼接字符串,也可使用||符号拼接。2.GROUPBY解析:分组查询核心子句,所有非聚合查询字段必须出现在GROUPBY后。3.隔离性解析:事务四大特性(ACID):原子性、一致性、隔离性、持久性。4.UPPER()、LOWER()解析:UPPER字符串转大写,LOWER字符串转小写。5.内连接(INNERJOIN)解析:内连接仅返回两张表中关联字段匹配成功的数据。6.TRUNCATE解析:TRUNCATE清空表数据,不记录事务日志、不可回滚,效率高于DELETE。7.ROWID解析:ROWID存储数据行的物理存储地址,是数据库底层唯一标识。8.BETWEEN...AND...解析:用于限定字段值的数值、日期区间范围。三、简答题详细答案1.DELETE和TRUNCATE的区别①事务特性:DELETE属于DML数据操作语言,会记录日志,支持事务回滚;TRUNCATE属于DDL数据定义语言,不记录操作日志,执行后无法回滚。②执行效率:TRUNCATE直接清空整张表数据,不逐行扫描,效率远高于DELETE;DELETE是逐行删除数据。③主键自增:TRUNCATE会重置表的自增序列,DELETE删除数据后自增序列不会重置。④权限与场景:DELETE可带WHERE条件删除指定数据;TRUNCATE只能清空全表数据,无法精准删除。2.四种连接方式的区别①内连接(INNERJOIN):只返回两张表中关联字段匹配成功的数据,无匹配数据则不展示。②左连接(LEFTJOIN):以左表为核心,展示左表所有数据,右表匹配不到的数据显示为空值。③右连接(RIGHTJOIN):以右表为核心,展示右表所有数据,左表匹配不到的数据显示为空值。④全连接(FULLJOIN):展示左表和右表的所有数据,任意一张表匹配不到的字段均显示空值。3.ROWNUM和ROWID的区别①本质不同:ROWID是数据行的物理存储地址,是固定不变的唯一标识;ROWNUM是查询结果的动态行号,每次查询都会重新生成。②用途不同:ROWID用于快速定位物理数据行、去重;ROWNUM主要用于分页查询、限制查询结果条数。③稳定性不同:数据行不会轻易改变ROWID;查询条件、排序方式改变,ROWNUM会随之改变。四、实操编程题(标准答案+详细解析)1.薪资、入职时间条件查询sql

SELECTemp_name,salary,hire_date

FROMemp

WHEREsalary>8000

ANDhire_date>=TO_DATE('2020-01-01','yyyy-mm-dd');解析:Oracle日期比较必须使用TO_DATE函数格式化字符串日期,通过AND拼接两个查询条件,精准筛选符合要求的员工数据。2.部门薪资统计分组查询sql

SELECT

dept_id,

COUNT(emp_id)ASdept_emp_num,

ROUND(AVG(salary),2)ASavg_salary,

MAX(salary)ASmax_salary,

MIN(salary)ASmin_salary

FROMemp

GROUPBYdept_id

ORDERBYdept_emp_numDESC;解析:按部门编号分组,使用聚合函数统计人数、平均薪资、极值;ROUND保留两位小数,优化数据展示;最后按人数降序排序。3.Oracle分页查询(6-10条数据)sql

SELECTemp_id,emp_name,dept_name,salary

FROM(

SELECT

e.emp_id,

e.emp_name,

d.dept_name,

e.salary,

ROWNUMrn

FROMempe

LEFTJOINdeptdON

温馨提示

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

评论

0/150

提交评论