SQL经典笔试题(含详细答案解析·企业真实版)_第1页
SQL经典笔试题(含详细答案解析·企业真实版)_第2页
SQL经典笔试题(含详细答案解析·企业真实版)_第3页
SQL经典笔试题(含详细答案解析·企业真实版)_第4页
SQL经典笔试题(含详细答案解析·企业真实版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

SQL经典笔试题(含详细答案解析·企业真实版)一、试题前置说明(必看)本次笔试使用两张通用业务表,所有题目均基于下表查询、操作,无特殊自定义语法,兼容MySQL、Oracle主流数据库。1.学生表student字段说明:id(学生主键)、name(学生姓名)、age(年龄)、gender(性别)、class_id(班级编号)、create_time(入学时间)idnameagegenderclass_idcreate_time1张三18男1012024-09-012李四19女1012024-09-013王五18男1022024-09-024赵六20女1022024-09-025孙七19男1032024-09-036周八18女1032024-09-032.成绩表score字段说明:id(主键)、student_id(学生ID)、subject(科目)、score(分数)idstudent_idsubjectscore11语文8821数学9532语文9242数学8553语文7863数学8274语文9084数学98二、SQL笔试题(15道基础+进阶)基础题(1-8)1、查询所有18岁的学生姓名、性别、班级编号2、查询101班级的所有学生,按年龄降序排序3、查询学生表中所有不重复的年龄4、查询入学时间在2024-09-02及之后的学生信息5、查询语文成绩大于85分的学生ID和成绩6、统计总共有多少名学生7、查询所有男生的最大年龄和最小年龄8、统计每个班级的男生、女生人数进阶题(9-15)9、查询每个学生的姓名、语文成绩、数学成绩(行转列)10、查询平均分最高的学生姓名及其平均分11、查询没有数学成绩的学生姓名12、统计每个科目的最高分、最低分、平均分13、查询班级人数最多的班级编号及人数14、查询所有学生的总成绩,按总成绩从高到低排序,显示姓名、总成绩15、删除成绩表中分数低于80分的成绩记录三、详细答案+解题解析基础题答案解析第1题sql

SELECTname,gender,class_idFROMstudentWHEREage=18;解析:简单条件查询,限定年龄=18,只查询指定字段,避免查询全表字段浪费性能,是开发常用规范。第2题sql

SELECT*FROMstudentWHEREclass_id=101ORDERBYageDESC;解析:WHERE筛选班级,ORDERBY字段DESC实现降序排序,ASC为升序(默认可省略)。第3题sql

SELECTDISTINCTageFROMstudent;解析:DISTINCT关键字用于去重,专门查询字段的不重复值,日常统计维度数据高频使用。第4题sql

SELECT*FROMstudentWHEREcreate_time>='2024-09-02';解析:时间字段可直接用大小于符号比较,字符串时间格式需和数据库存储格式一致,避免查询失效。第5题sql

SELECTstudent_id,scoreFROMscoreWHEREsubject='语文'ANDscore>85;解析:多条件查询,用AND连接同时满足的条件,精准筛选科目和分数条件。第6题sql

SELECTCOUNT(id)ASstudent_totalFROMstudent;解析:COUNT(主键)统计有效数据行数,比COUNT(*)性能更高,AS用于字段别名,展示更直观。第7题sql

SELECTMAX(age)ASmax_age,MIN(age)ASmin_ageFROMstudentWHEREgender='男';解析:聚合函数MAX最大值、MIN最小值,先筛选数据再聚合,符合业务统计逻辑。第8题sql

SELECT

class_id,

SUM(CASEWHENgender='男'THEN1ELSE0END)ASboy_num,

SUM(CASEWHENgender='女'THEN1ELSE0END)ASgirl_num

FROMstudent

GROUPBYclass_id;解析:分组统计经典写法,GROUPBY班级分组,CASEWHEN实现条件计数,替代多次查询,效率更高。进阶题答案解析第9题(行转列经典题)sql

SELECT

,

MAX(CASEWHENsc.subject='语文'THENsc.scoreEND)AS语文成绩,

MAX(CASEWHENsc.subject='数学'THENsc.scoreEND)AS数学成绩

FROMstudents

LEFTJOINscorescONs.id=sc.student_id

GROUPBYs.id,;解析:多表关联+行转列核心语法。学生表左连接成绩表(保证所有学生都展示),CASEWHEN将科目行数据转为列数据,MAX聚合去除空值,是面试高频考点。第10题sql

SELECT

,

AVG(sc.score)ASavg_score

FROMstudents

JOINscorescONs.id=sc.student_id

GROUPBYs.id,

ORDERBYavg_scoreDESC

LIMIT1;解析:AVG求平均分,按学生分组,平均分降序排序,LIMIT1取第一名,适配MySQL;Oracle可使用ROWNUM实现。第11题sql

SELECTnameFROMstudent

WHEREidNOTIN(SELECTstudent_idFROMscoreWHEREsubject='数学');解析:子查询筛选有数学成绩的学生ID,NOTIN反向匹配,查询无数学成绩的学生,是反向查询经典用法。第12题sql

SELECT

subjectAS科目,

MAX(score)AS最高分,

MIN(score)AS最低分,

ROUND(AVG(score),2)AS平均分

FROMscore

GROUPBYsubject;解析:按科目分组聚合,ROUND(数值,2)保留两位小数,优化数据展示效果,贴合实际报表需求。第13题sql

SELECT

class_id,

COUNT(id)ASstudent_num

FROMstudent

GROUPBYclass_id

ORDERBYstudent_numDESC

LIMIT1;解析:班级分组统计人数,人数降序排序,取第一条即为人数最多的班级。第14题sql

SELECT

,

SUM(sc.score)AStotal_score

FROMstudents

JOINscorescONs.id=sc.student_id

GROUPBYs.id,

ORDERBYtotal_scoreDESC;解析:SUM聚合个人总成绩,关联学生表获取姓名,最后按总成绩倒序排名,是成绩排名通用写法。第15题(删除操作)sql

DELETEFROMscoreWHEREscore<80;解析:条件删除数据,工作中删除前建议先SELECT查询核对数据,避免误删;生产环境删除需加事务。四、高频面试补充知识点1、

温馨提示

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

评论

0/150

提交评论