版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL笔试真题(含详细答案)适用场景:后端开发、数据分析、测试工程师入职笔试难度:入门-中级(企业高频必考)前置数据表说明本次所有题目基于3张常用业务表,所有题目均可直接执行测试1、学生表student字段名类型说明stu_idint学生编号(主键)stu_namevarchar(20)学生姓名gendervarchar(10)性别ageint年龄class_idint班级编号2、班级表class字段名类型说明class_idint班级编号(主键)class_namevarchar(20)班级名称teachervarchar(20)班主任3、成绩表score字段名类型说明stu_idint学生编号subjectvarchar(20)科目scoreint分数一、基础查询题(5题)题目1:查询所有学生的全部信息参考答案:sql
SELECT*FROMstudent;解析:*代表查询表中所有字段,FROM指定查询的数据表,是最基础的单表查询语句。题目2:查询所有学生的姓名、年龄、性别,只展示这三个字段参考答案:sql
SELECTstu_name,age,genderFROMstudent;解析:实际开发中不建议使用*,指定所需字段可以减少数据传输开销,提升查询效率。题目3:查询所有不重复的学生班级编号参考答案:sql
SELECTDISTINCTclass_idFROMstudent;解析:DISTINCT关键字用于去除查询结果中的重复数据,只保留唯一值。题目4:查询年龄大于18岁的所有男学生信息参考答案:sql
SELECT*FROMstudentWHEREage>18ANDgender='男';解析:WHERE用于条件筛选,AND表示多个条件同时成立,字符串类型的值需要用单引号包裹。题目5:查询姓名包含“张”的所有学生信息参考答案:sql
SELECT*FROMstudentWHEREstu_nameLIKE'%张%';解析:LIKE用于模糊查询,%是通配符,%张%代表字段中任意位置包含“张”字;张%代表以张开头,%张代表以张结尾。二、排序、分页与区间查询(4题)题目6:查询所有学生信息,按年龄降序排序,年龄相同按学号升序排序参考答案:sql
SELECT*FROMstudentORDERBYageDESC,stu_idASC;解析:ORDERBY实现排序,DESC降序、ASC升序(默认可不写),多字段排序优先级从左到右。题目7:查询年龄在16-20岁之间的学生姓名和年龄参考答案(两种写法均可):sql
--写法1:BETWEENAND
SELECTstu_name,ageFROMstudentWHEREageBETWEEN16AND20;
--写法2:条件判断
SELECTstu_name,ageFROMstudentWHEREage>=16ANDage<=20;解析:BETWEENAND是闭区间查询,包含首尾数值,适用于数值范围筛选。题目8:查询班级编号为1、3、5的学生信息参考答案:sql
SELECT*FROMstudentWHEREclass_idIN(1,3,5);解析:IN用于匹配多个固定值,等价于多个OR条件,代码更简洁,适合离散值筛选。题目9:分页查询学生数据,每页10条,查询第2页数据参考答案:sql
SELECT*FROMstudentLIMIT10,10;解析:LIMIT偏移量,条数;第1页:0,10,第2页:10,10,偏移量=(页码-1)*每页条数。三、聚合函数与分组查询(5题,高频必考)题目10:统计学生总人数、最大年龄、最小年龄、平均年龄参考答案:sql
SELECT
COUNT(*)AS总人数,
MAX(age)AS最大年龄,
MIN(age)AS最小年龄,
AVG(age)AS平均年龄
FROMstudent;解析:COUNT统计行数,MAX最大值,MIN最小值,AVG平均值,AS用于给字段起别名,优化结果展示。题目11:统计每个班级的学生人数,展示班级编号和人数参考答案:sql
SELECTclass_id,COUNT(*)AS学生人数
FROMstudent
GROUPBYclass_id;解析:GROUPBY用于分组统计,规则:SELECT后非聚合字段,必须出现在GROUPBY后。题目12:统计每个班级的学生人数,只展示人数大于3人的班级参考答案:sql
SELECTclass_id,COUNT(*)AS学生人数
FROMstudent
GROUPBYclass_id
HAVINGCOUNT(*)>3;重点解析(笔试易错点):1、WHERE过滤分组前的数据,HAVING过滤分组后的统计结果;2、聚合函数条件判断只能用HAVING,不能用WHERE。题目13:查询各科目的最高分、最低分、平均分参考答案:sql
SELECT
subjectAS科目,
MAX(score)AS最高分,
MIN(score)AS最低分,
ROUND(AVG(score),2)AS平均分
FROMscore
GROUPBYsubject;解析:ROUND(数值,小数位数)用于保留指定小数位数,优化平均分展示效果。题目14:查询平均分大于80分的科目参考答案:sql
SELECTsubject,ROUND(AVG(score),2)AS平均分
FROMscore
GROUPBYsubject
HAVINGAVG(score)>80;四、联表查询(4题,核心考点)题目15:查询所有学生的姓名、班级名称、班主任姓名参考答案:sql
SELECTs.stu_name,c.class_name,c.teacher
FROMstudents
JOINclasscONs.class_id=c.class_id;解析:内连接(JOIN)只查询两表中匹配成功的数据,给表起别名简化语句书写。题目16:查询所有学生的姓名、科目、分数(包含无成绩的学生)参考答案:sql
SELECTs.stu_name,sc.subject,sc.score
FROMstudents
LEFTJOINscorescONs.stu_id=sc.stu_id;解析(笔试高频区别):1、LEFTJOIN(左连接):保留左表所有数据,右表无匹配数据显示NULL;2、RIGHTJOIN(右连接):保留右表所有数据;3、INNERJOIN(内连接):只保留两边匹配数据。题目17:查询存在不及格分数(<60)的学生姓名、科目、分数参考答案:sql
SELECTs.stu_name,sc.subject,sc.score
FROMstudents
JOINscorescONs.stu_id=sc.stu_id
WHEREsc.score<60;题目18:查询每个班级的班级名称、班级人数参考答案:sql
SELECTc.class_name,COUNT(s.stu_id)AS班级人数
FROMclassc
LEFTJOINstudentsONc.class_id=s.class_id
GROUPBYc.class_name;解析:使用左连接可以统计无人的空班级,人数显示为0,符合业务统计需求。五、子查询与经典面试题(3题)题目19:查询分数最高的学生姓名和对应科目分数参考答案:sql
SELECTs.stu_name,sc.subject,sc.score
FROMstudents
JOINscorescONs.stu_id=sc.stu_id
WHEREsc.score=(SELECTMAX(score)FROMscore);解析:子查询先查出全局最高分,外层查询匹配对应学生信息。题目20:查询没有任何成绩的学生姓名参考答案:sql
SELECTstu_name
FROMstudent
WHEREstu_idNOTIN(SELECTDISTINCTstu_idFROMscore);解析:子查询查出所有有成绩的学生编号,NOTIN筛选出不在该列表中的学生,即无成绩学生。题目21:查询每门科目成绩最高的学生信息参考答案:sql
SELECTs.stu_name,sc.subject,sc.score
FROMstudents
JOINscorescONs.stu_id=sc.stu_id
WHERE(sc.subject,sc.score)IN(SELECTsubject,MAX(score)FROMscoreGROUPBYsubject);六、基础概念简答题(5题)题目22:简述WHERE和HAVING的区别标准答案:1、执行顺序不同:WHERE在分组(GROUPBY)之前过滤数据,HAVING在分组之后过滤统计结果;2、适用范围不同:WHERE不能使用聚合函数(MAX、MIN、COUNT等),HAVING专门用于过滤聚合统计后的结果;3、作用对象不同:WHERE过滤单行数据,HAVING过滤分组后的整体数据。题目23:简述INNERJOIN、LEFTJOIN、RIGHTJOIN的区别标准答案:1、INNERJOIN(内连接):只返回两张表中完全匹配的数据,是最常用的连接方式;2、LEFTJOIN(左连接):保留左表所有数据,右表无匹配数据填充NULL;3、RIGHTJOIN(右连接):保留右表所有数据,左表无匹配数据填充NULL。题目24:COUNT(*)、COUNT(字段)、COUNT(1)的区别标准答案:1、COUNT(*):统计所有行数,包含NULL值行,数据库会自动优化,效率最高;2、COUNT(字段):统计该字段非NULL的行数,会忽略字段为NULL的数据;3、COUNT(1):遍历所有行统计数量,效果和COUNT(*)基本一致,日常开发优先用COUNT(*)。题目25:SQL中模糊查询%和_的区别标准答案:1、%通配符:匹配任意长度的任意字符(包含0个字符);2、_通配符:只匹配单个任意字符;示例:LIKE'张_'匹配张三、张四;LIKE'张%'匹配张三、张三丰、小张等。题目26:GROUPBY分组的使用规则标准答案:1、SELECT查询的字段中,非聚合函数字段必须全部出现在GROUPBY之后;2、GROUPBY可以和HAVING搭配使用,用于过滤分组后的统计数据;3、分组查询结果,默认每组只返回一条统计数据。七、综合编程大题(1题)题目27:编写SQL完成以下需求需求:查询所有班级的班级名称、班主任、班级总人数、班级平均分,按班级平均分降序排序参考答案:sql
SELECT
c.class_nameAS班级名称,
c.teacherAS班主任,
COUNT(DISTINCTs.stu_id)AS班级总人数,
ROUND(AVG(sc.score),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险保全员技能实操水平考核试卷含答案
- 2026年医学医学影像技术学核医学试题及答案
- 2026年医学美学美容技术试题及答案
- 中心家园主题活动方案策划(3篇)
- 暹罗天地卖场营销方案(3篇)
- 林地采伐施工方案范本(3篇)
- 桥梁塔吊拆除施工方案(3篇)
- 安全月关于火灾
- 第四章 网络市场结构
- 安全演讲内容
- 2026年急诊科专科护理内涵建设与发展课件
- 2026统编版八年级历史上册全册问答版知识梳理
- 雨课堂学堂在线学堂云《导弹总体设计导论(国防科技)》单元测试考核答案
- 2025-2026学年浙江七彩阳光新高考研究联盟高一上学期期中考英语试题含答案
- 《产品结构设计与实践》 课件汇 第0-4章 绪论、空调遥控器结构设计-果盘一体化结构设计
- 核酸是遗传信息的携带者说课课件-高一上学期生物人教版必修1
- 2025年中国真空杯行业市场前景预测及投资价值评估分析报告
- 水利普法宣传课件
- 江苏省徐州市2024-2025学年七年级上学期期中考试数学试卷(含答案)
- 国网公司选拔专家人才考试题目含答案
- 长期卧床如何预防压疮
评论
0/150
提交评论