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

下载本文档

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

文档简介

SQL笔试真题(含详细答案解析)说明:本套试题为企业通用SQL笔试题型,涵盖基础查询、条件筛选、分组聚合、联表查询、子查询、数据统计、SQL优化基础等核心考点,适配开发、测试、数据分析岗位笔试,所有答案均为实际生产常用写法,解析通俗易懂。默认数据库:MySQL8.0,所有表结构为行业通用测试表,试题无特殊语法兼容问题。一、基础数据表说明(所有题目通用表)为统一答题标准,本次试题用到三张核心表,结构及初始数据如下:1.学生表student字段:id(学生主键)、name(学生姓名)、age(年龄)、gender(性别)、class_id(班级编号)、create_time(入学时间)2.班级表class字段:class_id(班级主键)、class_name(班级名称)、teacher(班主任姓名)3.成绩表score字段:id(主键)、student_id(学生ID)、subject(科目)、score(分数)二、填空题(共5题,每题4分,共20分)1.SQL中用于精准模糊匹配包含指定字符的关键字是______,搭配______符号使用。2.去除查询结果重复数据的关键字是______。3.分组查询必须满足:筛选分组后数据使用______,筛选分组前数据使用______。4.内连接查询的关键字是______,左连接查询的关键字是______。5.统计记录总条数的聚合函数是______,求和函数是______,平均值函数是______。填空题答案及解析1.LIKE、%解析:LIKE用于模糊查询,%代表任意多个字符,_代表单个字符,日常模糊查询最常用%。2.DISTINCT解析:DISTINCT可对查询字段去重,需放在字段最前方。3.HAVING、WHERE解析:WHERE在分组(GROUPBY)之前执行,过滤原始数据;HAVING在分组之后执行,过滤分组后的统计结果。4.INNERJOIN、LEFTJOIN解析:内连接只查询两张表匹配的数据,左连接以左表为基准,右表无匹配数据显示NULL。5.COUNT()、SUM()、AVG()解析:三大基础聚合函数,COUNT(*)统计所有记录,COUNT(字段)统计字段非空记录。三、简答题(共3题,每题6分,共18分)1.简述WHERE和HAVING的核心区别?2.简述LEFTJOIN和INNERJOIN的使用场景区别?3.说说SQL中NULL和空字符串''的区别?简答题答案解析1、WHERE和HAVING区别(1)执行顺序:WHERE先执行,在分组、聚合之前过滤原始数据;HAVING后执行,在分组、聚合完成后过滤结果数据;(2)使用限制:WHERE不能使用聚合函数(SUM、AVG、COUNT等);HAVING可以使用聚合函数;(3)生效范围:WHERE针对单条原始数据过滤;HAVING针对分组后的统计结果过滤。2、LEFTJOIN和INNERJOIN场景区别(1)INNERJOIN(内连接):只返回两张表中关联字段完全匹配的数据,适用于需要查询「两边数据都存在」的场景,比如查询有成绩的学生信息;(2)LEFTJOIN(左连接):以左表为全部基准,左表所有数据都会展示,右表无匹配数据填充NULL,适用于需要「保留左表全部数据」的场景,比如查询所有学生的成绩,包含无成绩的学生。3、NULL和空字符串区别(1)含义不同:NULL代表字段未赋值、未知状态;空字符串''代表字段已赋值,值为空文本;(2)存储不同:NULL占用存储空间更小,空字符串会占用对应字符存储空间;(3)查询判断不同:NULL不能用=、!=判断,只能用ISNULL/ISNOTNULL;空字符串可以直接用=''判断;(4)聚合计算不同:COUNT()会忽略NULL字段,不会忽略空字符串。四、实操查询题(共6题,每题7分,共42分)基于上方student、class、score三张表,编写对应SQL语句题目1:查询所有年龄大于18岁的男生学生信息,按年龄降序排序答案语句:sql

SELECT*FROMstudent

WHEREage>18ANDgender='男'

ORDERBYageDESC;解析:1.WHERE筛选条件:年龄大于18、性别为男;2.ORDERBYageDESC实现年龄从大到小排序;3.DESC代表降序,ASC为升序(默认可省略)。题目2:统计每个班级的学生人数,展示班级编号、班级名称、学生人数,人数大于3人的班级优先展示答案语句:sql

SELECTc.class_id,c.class_name,COUNT(s.id)ASstudent_num

FROMclassc

LEFTJOINstudentsONc.class_id=s.class_id

GROUPBYc.class_id,c.class_name

HAVINGstudent_num>3

ORDERBYstudent_numDESC;解析:1.用左连接关联班级表和学生表,保留所有班级;2.按班级分组,统计学生数量;3.HAVING过滤出人数大于3的班级;4.别名student_num用于排序和条件筛选。题目3:查询语文科目平均分最高的班级,展示班级名称、语文平均分答案语句:sql

SELECTc.class_name,AVG(sc.score)ASchinese_avg

FROMclassc

JOINstudentsONc.class_id=s.class_id

JOINscorescONs.id=sc.student_id

WHEREsc.subject='语文'

GROUPBYc.class_name

ORDERBYchinese_avgDESC

LIMIT1;解析:1.三表联查:班级、学生、成绩表;2.先筛选语文成绩数据,再按班级分组统计平均分;3.平均分降序排序,LIMIT1取第一名。题目4:查询所有不及格(分数<60)的学生姓名、科目、分数,分数为空的不展示答案语句:sql

SELECT,sc.subject,sc.score

FROMstudents

JOINscorescONs.id=sc.student_id

WHEREsc.score<60ANDsc.scoreISNOTNULL;解析:1.关联学生表和成绩表,获取学生姓名和成绩信息;2.双重条件筛选:分数小于60、分数非空;3.禁止使用!=NULL判断空值,必须用ISNOTNULL。题目5:查询没有任何成绩的学生姓名、年龄、班级编号答案语句:sql

SELECT,s.age,s.class_id

FROMstudents

LEFTJOINscorescONs.id=sc.student_id

WHEREsc.idISNULL;解析:1.学生表左连接成绩表,保留所有学生;2.成绩表主键为空,代表该学生无任何成绩记录,精准筛选无成绩学生。题目6:统计每个学生的总成绩、平均成绩,只展示平均成绩大于70分的学生,按总成绩降序排列答案语句:sql

SELECT,SUM(sc.score)AStotal_score,AVG(sc.score)ASavg_score

FROMstudents

JOINscorescONs.id=sc.student_id

GROUPBYs.id,

HAVINGavg_score>70

ORDERBYtotal_scoreDESC;解析:1.按学生ID、姓名分组(避免同名学生统计错误);2.用SUM、AVG统计总分和平均分;3.HAVING过滤分组后的平均分数据,最后按总分排序。五、进阶应用题(共1题,20分)题目:基于三张基础表,编写SQL实现以下需求:1.统计每个班级的总人数、各科平均分、班级最高分、班级最低分;2.只统计有成绩记录的班级;3.结果按班级人数降序排序,人数相同按平均分降序排序;4.最终展示字段:班级编号、班级名称、班级人数、科目、平均分、最高分、最低分答案语句:sql

SELECT

c.class_id,

c.class_name,

COUNT(DISTINCTs.id)ASstudent_count,

sc.subject,

ROUND(AVG(sc.score),2)ASavg_score,

MAX(sc.score)ASmax_score,

MIN(sc.score)ASmin_score

FROMclassc

JOINstudentsONc.class_id=s.class_id

JOINscorescONs.id=sc.student_id

GROUPBYc.class_id,c.class_name,sc.subject

ORDERBYstudent_countDESC,avg_scoreDESC;详细解析:1.三表内连接,自动过滤无成绩的班级,满足需求2;2.COUNT(DISTINCTs.id)统计班级人数,避免单学生多科目成绩导致人数统计重复;3.ROUND(AVG(sc.score),2)保留两位小数,优化数据展示效果;4.分组字段包含班级、科目,实现按班级+科目维度统计数据;5.多级排序,

温馨提示

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

评论

0/150

提交评论