版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MySQL面试SQL语句真题及详细答案(实战版)说明:所有题目均为互联网企业高频面试原题,贴合开发、测试、数据分析面试场景;SQL语句可直接复制执行,答案解析通俗易懂,无书面化套话,贴合面试官考察重点。提前准备三张面试通用测试表(所有题目基于此结构,统一环境,无歧义)sql
--学生表student
CREATETABLEstudent(
stu_idINTPRIMARYKEYAUTO_INCREMENT,
stu_nameVARCHAR(20)NOTNULLCOMMENT'学生姓名',
ageINTCOMMENT'年龄',
genderVARCHAR(10)COMMENT'性别',
class_idINTCOMMENT'班级id',
create_timeDATETIMEDEFAULTNOW()
);
--班级表class
CREATETABLEclass(
class_idINTPRIMARYKEYAUTO_INCREMENT,
class_nameVARCHAR(30)NOTNULLCOMMENT'班级名称',
teacherVARCHAR(20)COMMENT'班主任'
);
--成绩表score
CREATETABLEscore(
idINTPRIMARYKEYAUTO_INCREMENT,
stu_idINTCOMMENT'学生id',
subjectVARCHAR(20)COMMENT'科目',
scoreINTCOMMENT'分数'
);
一、基础查询面试题(入门高频)题目1:查询所有学生的姓名、年龄、性别SQL答案:sql
SELECTstu_name,age,genderFROMstudent;详细解析:1、面试考察点:基础单表查询、字段选取,禁止使用*全字段查询(工作和面试中规范,减少IO开销);2、需求明确需要什么字段就查什么字段,是职场基础规范。题目2:查询所有18岁及以上的男学生信息SQL答案:sql
SELECT*FROMstudentWHEREage>=18ANDgender='男';详细解析:1、WHERE用于条件筛选,多条件同时满足使用AND;2、字符串字段值必须加单引号,数值字段无需引号;3、运算符>=代表大于等于,对应题目“18岁及以上”。题目3:查询姓名包含“张”的所有学生SQL答案:sql
SELECT*FROMstudentWHEREstu_nameLIKE'%张%';详细解析:1、模糊查询使用LIKE关键字;2、%是通配符,%张%代表中间、开头、结尾包含“张”的所有内容;3、补充:张%代表以张开头,%张代表以张结尾。题目4:查询学生年龄不为空的学生信息SQL答案:sql
SELECT*FROMstudentWHEREageISNOTNULL;详细解析:1、NULL值判断不能用=、!=,必须使用ISNULL/ISNOTNULL;2、空字符串''和NULL不是一个概念,面试常考坑点。二、排序、分页、去重面试题题目5:查询所有学生,按年龄降序排序,年龄相同按学号升序SQL答案:sql
SELECT*FROMstudentORDERBYageDESC,stu_idASC;详细解析:1、ORDERBY实现排序,DESC降序,ASC升序(默认可省略);2、多字段排序:优先按前面字段排序,字段值相同则执行后序字段排序。题目6:分页查询学生数据,每页10条,查询第2页数据SQL答案:sql
SELECT*FROMstudentLIMIT10,10;详细解析:1、LIMIT偏移量,条数;公式:偏移量=(页码-1)*每页条数;2、第1页:LIMIT0,10,第2页:LIMIT10,10;3、面试高频:大数据量下偏移量过大会性能低下,需优化。题目7:查询学生表中所有不重复的班级IDSQL答案:sql
SELECTDISTINCTclass_idFROMstudent;详细解析:1、DISTINCT关键字用于字段去重,只保留唯一数据;2、多字段去重时,需写在所有字段前,针对组合字段去重。三、分组聚合函数面试题(核心必考)题目8:统计每个班级的学生人数SQL答案:sql
SELECTclass_id,COUNT(stu_id)ASstudent_num
FROMstudent
GROUPBYclass_id;详细解析:1、GROUPBY分组,按班级ID分组;2、COUNT()统计记录数,COUNT(字段)不会统计NULL值,COUNT(*)统计所有行;3、AS用于字段别名,方便展示和后续查询。题目9:统计每个班级人数大于3人的班级SQL答案:sql
SELECTclass_id,COUNT(stu_id)ASstudent_num
FROMstudent
GROUPBYclass_id
HAVINGstudent_num>3;详细解析:1、核心考点:WHERE和HAVING区别;2、WHERE过滤分组前的数据,HAVING过滤分组后的聚合结果;3、聚合函数结果筛选必须用HAVING,不能用WHERE。题目10:查询每门科目的最高分、最低分、平均分SQL答案:sql
SELECT
subject,
MAX(score)ASmax_score,
MIN(score)ASmin_score,
AVG(score)ASavg_score
FROMscore
GROUPBYsubject;详细解析:1、MAX最大值、MIN最小值、AVG平均值,为常用聚合函数;2、必须配合GROUPBY科目使用,实现分科统计。四、联表查询面试题(面试重点)题目11:查询所有学生的姓名、班级名称(学生表+班级表)SQL答案:sql
SELECTs.stu_name,c.class_name
FROMstudents
INNERJOINclasscONs.class_id=c.class_id;详细解析:1、INNERJOIN内连接,只查询两张表中匹配的数据;2、使用表别名简化SQL,是职场标准写法;3、关联条件为两张表的班级ID一致。题目12:查询所有学生的姓名、对应科目分数,无成绩也展示学生信息SQL答案:sql
SELECTs.stu_name,sc.subject,sc.score
FROMstudents
LEFTJOINscorescONs.stu_id=sc.stu_id;详细解析:1、LEFTJOIN左连接,以左表(student)为主,左表数据全部展示,右表无匹配则显示NULL;2、面试常考:内连接只展示匹配数据,左连接保留左表全部数据。题目13:查询有成绩记录的学生姓名、班级、科目、分数SQL答案:sql
SELECTs.stu_name,c.class_name,sc.subject,sc.score
FROMstudents
INNERJOINclasscONs.class_id=c.class_id
INNERJOINscorescONs.stu_id=sc.stu_id;详细解析:1、三表联查,依次关联学生、班级、成绩表;2、内连接保证数据完整,无无效NULL数据。五、子查询经典面试题(中高级必考)题目14:查询分数大于所有科目平均分的成绩记录SQL答案:sql
SELECT*FROMscore
WHEREscore>(SELECTAVG(score)FROMscore);详细解析:1、括号内为子查询,先查出全局平均分,再作为条件筛选;2、单行单列子查询,可直接用于WHERE条件。题目15:查询没有任何成绩的学生姓名SQL答案:sql
SELECTstu_nameFROMstudent
WHEREstu_idNOTIN(SELECTDISTINCTstu_idFROMscore);详细解析:1、子查询查出所有有成绩的学生ID;2、NOTIN筛选出不在成绩表中的学生,即无成绩学生;3、补充:数据量大时推荐用LEFTJOIN+ISNULL替代,性能更好。题目16:查询每个科目分数最高的学生信息SQL答案:sql
SELECTs.stu_name,sc.subject,sc.score
FROMscoresc
JOINstudentsONsc.stu_id=s.stu_id
WHERE(sc.subject,sc.score)IN(
SELECTsubject,MAX(score)FROMscoreGROUPBYsubject
);详细解析:1、多行多列子查询,分组查出每科最高分;2、通过字段组合IN匹配,获取对应最高分学生数据;3、面试高频难题,考察分组+子查询组合能力。六、经典业务面试题(真题压轴)题目17:查询班级学生人数最少的班级信息SQL答案:sql
SELECTclass_id,COUNT(stu_id)ASnum
FROMstudent
GROUPBYclass_id
ORDERBYnumASC
LIMIT1;详细解析:1、先分组统计各班人数,再升序排序,取第一条即为人数最少班级;2、如果存在多个班级人数相同且最少,该语句只取一条,可结合子查询优化。题目18:查询平均分最高的学生姓名及平均分sql
SELECTs.stu_name,AVG(sc.score)ASavg_score
FROMstudents
JOINscorescONs.stu_id=sc.stu_id
GROUPBYs.stu_id,s.stu_name
ORDERBYavg_scoreDESC
LIMIT1;详细解析:1、按学生ID、姓名分组,统计个人平均分;2、降序排序后取第一条,得到平均分最高学生。题目19:删除学生表中重复的年龄数据,保留学号最大的一条sql
DELETEFROMstudent
WHEREstu_idNOTIN(
SELECTMAX(stu_id)FROMstudentGROUPBYage
);详细解析:1、子查询分组取每个年龄最大的学号,作为保留数据;2、删除所有不在保留范围内的数据,实现去重;3、MySQL部分版本需加临时表嵌套,避免同表删改报错。题目20:更新所有不及格成绩(<60)为60分(保底分)sql
UPDATEscoreSETscore=60WHEREscore<60;详细解析:1、UPDATE批量更新数据,WHERE限定更新条件;2、面试重点:更新、删除语句必须带WHERE条件,禁止全表操作;3、工作中更新删除前必须先SELECT校验数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年企业并购意向书的确认信5篇范本
- 校园食品安全风险防控餐饮管理标准操作规程
- 2026贵州黔南州惠水县银龄讲学计划教师招募2人笔试备考试题及答案解析
- 公共安全事情紧急处理流程指导书
- 电动汽车电池寿命评估方案手册
- 嘉兴桐乡农商银行2026秋季招聘笔试备考试题及答案解析
- 2026年下半年营山县公安局公开招聘警务辅助人员(19人)考试备考题库及答案解析
- 2026温州市龙湾区海城街道社区卫生服务中心公开招聘编外工作人员2人考试备考试题及答案解析
- 音乐制作人与唱片推广绩效分析表
- 财务风险监控绩效考核表
- 传统蒙学在现代儿童德育中的创造性运用研究
- 《椭圆的几何性质》第1课时名师课件
- 国家电网公司招聘高校毕业生应聘登记表
- 青少年心理发展与教育(硕士)
- 林下土鸡养殖技术课件
- 电动卷帘门维修合同范本
- JBT 6434-2024 输油齿轮泵(正式版)
- 油脂制取工艺与设备课件
- 做出判断的分支复习课课件教科版高中信息技术必修1
- 风景园林美学智慧树知到答案章节测试2023年华南理工大学
- 高中美术 人美版 选修《绘画》对话大千世界-绘画创意与实践 第2课时《畅想世界-图画想象力》 课件
评论
0/150
提交评论