版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL高频面试题及详细答案(真实面试版)说明:本套题目为互联网、软件测试、数据分析、后端开发岗位高频SQL面试原题,从基础到进阶分层整理,答案贴合企业面试官考察重点,通俗易懂、无冗余话术,适合面试背诵与实操复习。一、SQL基础语法面试题1、简述SQL的常用分类及对应关键字答案:SQL主要分为四大类,日常工作中最常用的是DML和DDL:1、DDL(数据定义语言):用于定义、修改数据库和表结构,不操作数据核心关键字:CREATE(创建)、ALTER(修改)、DROP(删除)、TRUNCATE(清空表结构保留,删除数据)2、DML(数据操作语言):用于操作表中的数据,日常使用最多核心关键字:SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)3、DCL(数据控制语言):用于权限管理核心关键字:GRANT(授权)、REVOKE(撤销权限)4、TCL(事务控制语言):用于管理数据库事务核心关键字:COMMIT(提交事务)、ROLLBACK(回滚事务)、SAVEPOINT(保存点)2、DELETE、TRUNCATE、DROP的区别?(高频必考)答案:1、功能区别DELETE:删除表中的部分或全部数据,保留表结构,可以加WHERE条件精准删除;TRUNCATE:清空整张表所有数据,保留表结构,无法加WHERE条件;DROP:直接删除整张表,包括数据和表结构,彻底销毁表。2、事务区别DELETE属于DML,可事务回滚;TRUNCATE、DROP属于DDL,执行后自动提交,无法回滚。3、自增主键区别DELETE删除数据后,自增主键不会重置;TRUNCATE清空后,自增主键会从头重新计数。4、效率区别DROP>TRUNCATE>DELETE,TRUNCATE直接释放数据存储空间,效率远高于逐行删除的DELETE。3、WHERE和HAVING的核心区别答案:1、执行顺序不同:WHERE是分组前过滤,HAVING是分组后过滤2、使用范围不同:WHERE可以单独使用,作用于所有数据行;HAVING必须配合GROUPBY分组查询使用3、聚合函数支持不同:WHERE不能使用聚合函数(SUM、COUNT、MAX等),HAVING可以使用聚合函数筛选分组结果4、优先级:WHERE过滤原始数据→GROUPBY分组→HAVING过滤分组结果示例:查询部门人数大于3人的部门SELECTdept_id,COUNT(*)ASnumFROMemployeeGROUPBYdept_idHAVINGnum>3;二、查询与函数进阶面试题4、DISTINCT的作用及使用注意事项答案:DISTINCT用于去重查询,剔除查询结果中的重复数据,只保留唯一值。注意事项:1、DISTINCT作用于后面所有字段,不是只针对第一个字段,多个字段组合重复才会去重;2、DISTINCT会增加查询开销,底层需要排序比对数据,大数据量场景尽量少用;3、NULL值会被视为相同值,多个NULL会被去重保留一个。5、ORDERBY排序规则,NULL值排序优先级答案:ORDERBY用于结果排序,ASC为升序(默认),DESC为降序。NULL值排序规则(MySQL):1、升序(ASC):NULL值排在最前面;2、降序(DESC):NULL值排在最后面。6、常用聚合函数有哪些?聚合函数的特点答案:常用聚合函数:COUNT(计数)、SUM(求和)、AVG(平均值)、MAX(最大值)、MIN(最小值)核心特点:1、聚合函数会自动忽略NULL值,不会统计NULL;2、COUNT(*)统计所有行数,包含NULL和空值;COUNT(字段)统计该字段非空数据;3、所有聚合函数都可以配合GROUPBY使用。三、联表查询面试题(重中之重)7、简述MySQL四种联表查询的区别答案:假设A表为左表,B表为右表:1、INNERJOIN(内连接):只查询两张表中匹配成功的数据,匹配不到的数据直接过滤2、LEFTJOIN(左连接):以左表为基准,左表所有数据全部保留,右表匹配不到则显示NULL3、RIGHTJOIN(右连接):以右表为基准,右表所有数据全部保留,左表匹配不到则显示NULL4、FULLJOIN(全连接):保留左右两张表的所有数据,匹配不到的字段补NULL(MySQL不支持,可通过UNION模拟)8、LEFTJOIN后加WHERE和AND的区别?(高频坑题)答案:1、AND:是连接条件,只限制右表数据,不影响左表所有数据展示,右表不满足条件则字段为NULL,左表数据保留;2、WHERE:是结果过滤条件,联表查询结束后再筛选,会过滤掉左表数据,相当于把左连接强制变成内连接。举例:查询所有员工及对应部门,只展示部门状态为正常的记录--正确:保留所有员工,只匹配正常部门SELECT*FROMemployeeeLEFTJOINdeptdONe.dept_id=d.idANDd.status=1;--错误:会过滤掉无部门的员工数据SELECT*FROMemployeeeLEFTJOINdeptdONe.dept_id=d.idWHEREd.status=1;9、UNION和UNIONALL的区别答案:1、去重区别:UNION会自动去除合并后的重复数据;UNIONALL不去重,直接拼接所有结果2、效率区别:UNION需要排序去重,效率低;UNIONALL无需排序,效率极高3、使用场景:无重复数据、追求效率优先用UNIONALL;需要自动去重用UNION通用要求:两个查询的字段数量、字段类型必须一致。四、子查询与分组排序面试题10、什么是子查询?子查询的分类答案:子查询就是嵌套在SQL语句中的查询语句,优先执行内层查询,结果作为外层SQL的条件、数据源。分类:1、标量子查询:内层查询返回单行单列数据;2、列子查询:返回多行单列数据,配合IN、ANY、ALL使用;3、行子查询:返回单行多列数据;4、表子查询:返回多行多列,作为临时表使用,必须起别名。11、GROUPBY分组的使用规则答案:1、SELECT后的非聚合字段,必须出现在GROUPBY后面(MySQL严格模式下强制要求);2、GROUPBY可以多个字段分组,按照字段组合唯一分组;3、分组后过滤条件只能用HAVING,不能用WHERE;4、GROUPBY默认会隐式排序,大数据量场景建议手动指定ORDERBY提升效率。五、数据库事务面试题12、简述事务的ACID四大特性答案:1、原子性(Atomicity):事务要么全部执行成功,要么全部回滚失败,不可部分执行;2、一致性(Consistency):事务执行前后,数据库数据状态保持一致,不会出现数据错乱;3、隔离性(Isolation):多个事务并发执行时,相互独立互不干扰;4、持久性(Durability):事务提交成功后,数据永久落地,断电、宕机不会丢失数据。13、MySQL四大事务隔离级别及问题(高频)答案:1、读未提交(ReadUncommitted):可以读取其他事务未提交的数据,会出现脏读、不可重复读、幻读,几乎不用;2、读已提交(ReadCommitted):只能读取已提交数据,解决脏读,存在不可重复读、幻读(Oracle默认级别);3、可重复读(RepeatableRead):同一事务内多次读取数据结果一致,解决脏读、不可重复读,存在幻读(MySQL默认级别);4、串行化(Serializable):最高级别,事务串行执行,解决所有并发问题,性能极低,极少使用。三类问题解释:脏读:读取到其他事务未提交的临时数据;不可重复读:同一事务内,两次读取同一数据,结果被其他事务修改;幻读:同一事务内,其他事务新增/删除数据,导致查询结果条数变化。六、索引与SQL优化面试题14、什么是索引?索引的优缺点答案:索引是数据库为数据表建立的快速查询数据的目录结构,MySQL默认使用B+树索引。优点:大幅提升查询、排序、分组的效率,减少数据库IO消耗;缺点:1、占用磁盘存储空间;2、降低增删改效率,数据变更时需要同步更新索引结构;3、小数据量表建立索引无意义,反而增加开销。15、索引失效的常见场景(面试必考)答案:1、索引字段使用函数、运算、类型转换;例:WHEREDATE(create_time)='2026-08-01'、WHEREage+10>202、模糊查询以%开头:LIKE'%张三'、LIKE'%三%',索引失效;LIKE'张三%'索引有效3、使用!=、<>、NOTIN、NOTEXISTS大概率索引失效4、字符串字段不加引号,发生隐式类型转换,索引失效5、OR连接的条件中,有字段无索引,整段索引失效6、联合索引不遵循最左前缀原则7、MySQL判断全表扫描比索引查询更快时,会自动放弃索引16、联合索引最左前缀原则答案:联合索引是多个字段组合的索引,查询时必须匹配最左侧的索引字段,索引才会生效,后续字段依次匹配。例:联合索引(a,b,c)有效查询:wherea=1、wherea=1andb=2、wherea=1andb=2andc=3失效查询:whereb=2、wherec=3、whereb=2andc=3(跳过最左a字段)补充:最左前缀可以中断,wherea=1andc=3,a字段索引生效,c字段失效。17、日常SQL优化的常用手段答案:1、查询尽量指定具体字段,禁止SELECT*,减少数据传输和索引匹配开销;2、合理建立索引,高频查询字段建索引,遵循最左前缀原则,避免索引失效场景;3、优先使用INNERJOIN,减少LEFTJOIN、RIGHTJOIN的全表数据保留;4、大数据量去重优先用UNIONALL代替UNION;5、避免在索引字段使用函数、运算、模糊前置%;6、分页查询大数据量时,避免OFFSET超大分页,采用主键分页优化;7、合理使用LIMIT限制返回条数,减少结果集大小;8、避免使用SELECTDISTINCT、ORDERBY、GROUPBY做大数据量操作。七、经典手写SQL面试真题(含答案)基础表结构(通用面试表):员工表employee(id,name,dept_id,salary,create_time)部门表dept(id,dept_name,status)18、查询每个部门的员工人数、最高工资、最低工资、平均工资答案:PlainText
SELECT
dept_id,
COUNT(*)ASemp_num,
MAX(salary)ASmax_sal,
MIN(salary)ASmin_sal,
ROUND(AVG(salary),2)ASavg_sal
FROMemployee
GROUPBYdept_id;19、查询平均工资大于8000的部门编号和平均工资答案:PlainText
SELECT
dept_id,
ROUND(AVG(salary),2)ASavg_sal
FROMemployee
GROUPBYdept_id
HAVINGavg_sal>8000;20、查询所有员工姓名、所属部门名称(无部门则显示无部门)答案:PlainText
SELECT
,
IFNULL(d.dept_name,'无部门')ASdept_name
FROMemployeee
LEFTJOINdeptdONe.dept_id=d.id;21、查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2027学年初中数学七年级上册(新教材)北师大版(新教材)3 数据的表示课时刷题卷
- 安全原理培训课件
- 爱情与家庭教学课件
- 初中二年级物理《声音的产生与传播》教案
- 安全隐患通报
- 安全隐患报告模板
- 广东广州市天河区2026届普通高中毕业班适应性训练(二模)英语试题(解析版)
- 山东省济宁市兖州区2025-2026学年高一下学期期中考试英语试题(解析版)
- 并购协同效应建模:收入协同与成本协同的量化方法
- 2026年天津市人教版初中语文七年级下册第9单元测试题
- 2027年新版《校园安全教育》课件 专题二
- 2026智慧水电厂安全生产管控一体化建设方案(第四册共七册)
- 2026年北京市检察院公益诉讼检察官业务竞赛真题及答案解析
- T/CI 1107-2025经颅直流电刺激仪
- T/CI 1074-2025高密度聚乙烯(HDPE)实壁增强塑料顶管
- 第三单元达标测试卷(试卷)2026-2027学年六年级数学上册人教版(含答案)
- 防雷安全管理台账(全套完整版)
- 物业公司廉洁从业行为规范手册
- 脱垂性内痔的护理
- 胶带模切培训资料
- 医疗护理员培训大纲解读
评论
0/150
提交评论