基本信息
文件名称:SQL笔试题及答案.docx
文件大小:26.5 KB
总页数:5 页
更新时间:2025-09-25
总字数:约3.83千字
文档摘要

SQL笔试题及答案

一、基础选择题(每题5分,共25分)

以下哪种SQL索引类型,在执行“范围查询(如WHEREsalary5000)”时效率最高?()

A.哈希索引B.聚簇索引C.非聚簇索引D.全文索引

事务的ACID特性中,“确保事务执行后,数据从一个一致状态变到另一个一致状态”指的是?()

A.原子性(Atomicity)B.一致性(Consistency)

C.隔离性(Isolation)D.持久性(Durability)

现有员工表emp(emp_id,emp_name,dept_id,salary)和部门表dept(dept_id,dept_name),要查询“研发部”所有员工的姓名和工资,以下SQL正确的是?()

A.SELECTemp_name,salaryFROMempWHEREdept_id=(SELECTdept_idFROMdeptWHEREdept_name=研发部)

B.SELECTemp_name,salaryFROMempJOINdeptONemp.dept_id=dept.dept_idWHEREdept_name=研发部

C.SELECTemp_name,salaryFROMemp,deptWHEREdept_name=研发部

D.以上都正确

执行“DELETEFROMempWHEREdept_id=10”后,若想撤销该操作,以下哪种方式可行?()

A.执行ROLLBACKB.执行UNDODELETE

C.若未提交事务,执行ROLLBACK;若已提交,无法撤销D.执行DELETE的反向操作INSERT

以下关于GROUPBY的说法,错误的是?()

A.GROUPBY用于对查询结果分组统计

B.GROUPBY后可以跟多个字段(如GROUPBYdept_id,gender)

C.HAVING子句用于过滤GROUPBY后的结果,不能单独使用

D.GROUPBY可以和LIMIT一起使用,限制分组后的结果数量

二、简单查询题(每题10分,共30分)

现有表结构:

员工表emp:emp_id(员工ID,主键)、emp_name(姓名)、dept_id(部门ID)、salary(工资)、hire_date(入职日期)

部门表dept:dept_id(部门ID,主键)、dept_name(部门名称)

编写SQL,查询“销售部”中工资大于6000的员工姓名、工资,按工资降序排序。

编写SQL,统计每个部门的员工数量,显示“部门名称”和“员工数量”,若部门无员工则显示0。

编写SQL,查询2020年1月1日后入职的员工中,工资排名前3的员工ID和姓名。

三、复杂查询题(每题15分,共45分)

编写SQL,查询“平均工资最高的部门”的名称及该部门的平均工资(保留2位小数)。

编写SQL,查询每个员工的姓名、所属部门名称,以及其直接领导的姓名(提示:emp表中新增manager_id字段,关联领导的emp_id)。

编写SQL,查询连续3个月工资超过8000的员工ID和姓名(假设工资每月记录一次,表salary_record:emp_id、salary、record_month)。

答案及解析

一、基础选择题

答案:B

解析:聚簇索引将数据与索引存储在一起,范围查询时无需跨文件查找,效率最高;哈希索引适合等值查询,不支持范围查询;非聚簇索引需先查索引再找数据,效率低于聚簇索引。

答案:B

解析:原子性指事务“要么全执行,要么全不执行”;隔离性指多个事务互不干扰;持久性指事务提交后数据永久保存;一致性对应“数据状态一致”。

答案:B

解析:A选项存在隐患——若“研发部”有多个dept_id(虽实际中部门名唯一,但SQL语法上子查询返回多行会报错);C选项未关联dept_id,会导致笛卡尔积,查询结果错误;B选项用JOIN显式关联,逻辑严谨,正确。

答案:C

解析:DELETE操作后,若未执行COMMIT,可通过ROLLBACK撤销;若已COMMIT,事务已结束,无法通过常规方式撤销(需依赖备份恢复)。

答案:无错误选项(原D选项正确,若题目需改错题,可调整D为“GROUPBY必须跟聚合函数”)

解析:A、B、C均正确;D选项中,GROUPBY+LIMIT是常用场景(如“取每个