版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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只删除表数据,保留表结构;TRUNCATE清空整张表数据,保留表结构;DROP直接删除整张表,包括数据和表结构。2.事务支持:DELETE属于DML,支持事务,可以回滚;TRUNCATE和DROP属于DDL,执行后自动提交,不支持事务、无法回滚。3.日志与效率:DELETE删除数据会逐行记录日志,数据量大时效率低;TRUNCATE直接释放数据页,几乎不记录日志,速度极快;DROP速度最快。4.自增主键:DELETE删除数据后,自增主键会延续之前的数值,不会重置;TRUNCATE清空表后,自增主键会重置为初始值。5.适用场景:少量数据删除用DELETE;清空全表数据用TRUNCATE;彻底删除数据表用DROP。3、什么是数据库事务?事务的四大特性(ACID)事务是一组SQL语句的执行单元,这组语句要么全部执行成功,要么全部执行失败回滚,保证数据库数据的一致性。四大特性ACID:1.原子性(Atomicity):事务是最小执行单元,不可分割,全部成功或全部失败。2.一致性(Consistency):事务执行前后,数据库的完整性约束不会被破坏(比如转账前后总金额不变)。3.隔离性(Isolation):多个事务并发执行时,相互独立、互不干扰。4.持久性(Durability):事务提交成功后,数据会永久写入数据库,即使服务器宕机也不会丢失。4、MySQL事务的四大隔离级别及默认级别隔离级别从低到高,隔离性越强,并发性能越差,能解决的并发问题越多:1.读未提交:允许事务读取其他事务未提交的数据,会出现脏读、不可重复读、幻读,几乎不使用。2.读已提交:只能读取其他事务已提交的数据,解决脏读,存在不可重复读、幻读,是Oracle默认级别。3.可重复读:同一个事务内,多次读取同一数据结果一致,解决脏读、不可重复读,存在幻读,是MySQLInnoDB默认隔离级别。4.串行化:最高隔离级别,事务串行执行,完全解决三类并发问题,但并发效率极低。三类并发问题简单区分:脏读是读了未提交的脏数据;不可重复读是同一事务两次读同一数据,结果被其他事务修改;幻读是同一事务两次查询,数据条数被其他事务增减。二、基础查询与条件题型1、WHERE和HAVING的区别1.执行顺序:WHERE是分组(GROUPBY)之前过滤数据;HAVING是分组之后过滤分组结果。2.适用条件:WHERE后面不能使用聚合函数(SUM、COUNT、MAX等);HAVING专门用于过滤聚合函数的结果。3.作用范围:WHERE过滤数据表的原始行数据;HAVING过滤分组后的统计数据。示例:统计班级平均分大于80分的班级,只能用HAVING,因为平均分是分组聚合后的结果。正确语句:SELECTclass,AVG(score)FROMstudentGROUPBYclassHAVINGAVG(score)>80;2、LIMIT的用法,如何实现分页查询LIMIT用于限制查询结果的返回条数,是MySQL专属语法。基础语法:LIMIT起始下标,展示条数;下标从0开始。分页通用公式:第N页,每页M条数据,语句为LIMIT(N-1)*M,M示例:查询第3页、每页10条数据:SELECT*FROMstudentLIMIT20,10;3、DISTINCT的作用及使用注意事项DISTINCT用于去除查询结果中的重复数据,只保留唯一数据。注意事项:1.DISTINCT作用于后面所有字段,不是只作用于第一个字段,多个字段组合重复才会去重。2.不建议大批量数据使用,会增加数据库排序开销,性能较差。3.不能和聚合函数混用错误写法,需注意语法顺序。三、分组与聚合函数题型1、常用的聚合函数有哪些?聚合函数的特点常用聚合函数:COUNT(统计条数)、SUM(求和)、AVG(平均值)、MAX(最大值)、MIN(最小值)。核心特点:1.聚合函数会自动忽略NULL值,不会统计空数据。2.不使用GROUPBY时,整张表默认是一个分组,聚合函数返回全局统计结果。3.GROUPBY分组查询时,SELECT后面只能跟分组字段和聚合函数,不能写普通字段。2、COUNT(*)、COUNT(1)、COUNT(字段)的区别1.COUNT(*):统计所有行数,包含NULL值、重复行,不会忽略任何数据。2.COUNT(1):原理和COUNT(*)基本一致,遍历所有行统计行数,忽略字段NULL,实际生产中效率几乎无差别。3.COUNT(字段):只统计该字段不为NULL的行数,会自动过滤掉字段为空的数据。工作场景建议:统计表格总条数用COUNT(*),统计某个有效字段数据量用COUNT(字段)。四、联表查询高频题1、MySQL常用联表查询有几种?区别是什么?常用四种联表方式,基于两张表关联查询:1.内连接(INNERJOIN):只返回两张表中匹配成功的数据,两边不匹配的数据全部过滤。2.左连接(LEFTJOIN):以左表为基准,返回左表所有数据,右表匹配不到的字段填充NULL。工作中使用最多。3.右连接(RIGHTJOIN):以右表为基准,返回右表所有数据,左表匹配不到的字段填充NULL。4.全连接(FULLJOIN):返回两张表所有数据,匹配不到的填充NULL。注意:MySQL不支持FULLJOIN,可通过UNION合并左连接和右连接实现。2、LEFTJOIN和INNERJOIN适用场景1.INNERJOIN:适用于需要精准匹配两边数据的场景,比如查询「有订单的用户信息」,必须用户和订单数据同时存在。2.LEFTJOIN:适用于需要保留主表全部数据的场景,比如查询「所有用户的订单信息」,即使部分用户没有订单,也要保留用户数据,订单字段为空即可。3、UNION和UNIONALL的区别1.去重差异:UNION会自动去除合并后的重复数据;UNIONALL直接拼接所有结果,不去重。2.性能差异:UNION需要排序去重,性能低;UNIONALL无排序操作,性能远高于UNION。3.使用建议:业务无重复数据、不需要去重时,优先用UNIONALL,提升查询效率。4.共同点:前后两个查询的字段数量、字段类型必须一致。五、子查询与常用函数1、什么是子查询?子查询的分类子查询就是嵌套在其他SQL语句中的查询语句,通俗说就是查询中套查询,用于分步处理复杂查询需求。分类:1.标量子查询:子查询只返回单行单列数据。2.行子查询:返回单行多列数据。3.列子查询:返回多行单列数据,常搭配IN、ANY、ALL使用。4.表子查询:返回多行多列数据,可作为临时表使用。2、IN和EXISTS的区别,如何选择使用1.执行逻辑:IN是先执行子查询,将结果缓存,主查询匹配子查询结果;EXISTS是遍历主查询数据,逐条判断子查询是否存在匹配数据。2.性能差异:主表数据少、子查询数据多,用IN;主表数据多、子查询数据少,用EXISTS。3.空值处理:IN查询子查询结果含NULL时,查询结果为空;EXISTS不受NULL值影响。3、常用字符串、时间函数有哪些1.字符串函数:LENGTH():获取字符串长度;CONCAT():字符串拼接;SUBSTR():截取字符串;UPPER()/LOWER():大小写转换;REPLACE():替换字符串。2.时间函数:NOW():获取当前时间;CURDATE():获取当前日期;DATE_FORMAT():时间格式化;DATEDIFF():计算日期差值;DATE_ADD():日期加减。六、索引基础面试题(核心高频)1、什么是索引?索引的作用索引是数据库为数据表字段建立的一种数据结构,类似于书籍的目录,目的是提升数据查询效率。核心作用:1.大幅降低查询数据的时间复杂度,加快查询速度。2.唯一索引可以保证字段数据的唯一性。3.联合索引可以实现数据排序,减少排序开销。缺点:会占用磁盘空间,新增、修改、删除数据时,需要同步更新索引,降低写入效率。2、MySQL索引的分类1.主键索引:主键字段自动生成,唯一且非空,一张表只能有一个主键索引。2.唯一索引:字段数据唯一,允许为NULL,一张表可以有多个唯一索引。3.普通索引:最基础的索引,无唯一性限制,仅用于提升查询效率。4.联合索引:多个字段组合建立的索引,遵循最左匹配原则。5.全文索引:用于大文本字段的模糊查询,适配长文本检索场景。3、什么是联合索引最左匹配原则联合索引遵循「最左前缀匹配」,查询条件必须匹配索引的最左侧字段,索引才会生效。举例:建立联合索引(a,b,c)索引生效场景:wherea=?、wherea=?andb=?、wherea=?andb=?andc=?索引失效场景:whereb=?、wherec=?、whereb=?andc=?日常开发中建立联合索引,需要把高频查询、筛选力度大的字段放在最左侧。4、常见的索引失效场景1.违背联合索引最左匹配原则。2.索引字段使用函数、运算、表达式,比如WHERELEFT(name,2)='张三'、WHEREage+1=20。3.字段类型隐式转换,比如字符串字段不加引号、数字字段加引号。4.使用!=、<>、NOTIN、NOTLIKE等负向查询。5.LIKE以%开头模糊查询,比如LIKE'%张三'。6.OR连接的字段,部分字段无索引,会导致整体索引失效。七、实战SQL编程题(简单实操)准备测试表(通用学生成绩表)学生表student(id,name,class,age)成绩表score(id,student_id,subject,score)1、查询所有学生的姓名、班级、对应语文成绩(无成绩显示NULL)答案:SELECT,s.class,sc.scoreAS语文成绩FROMstudentsLEFTJOINscorescONs.id=sc.student_idANDsc.subject='语文';解析:需要保留所有学生数据,使用左连接,筛选条件放在关联后,保证无成绩学生数据不丢失。2、查询每个班级的学生人数、平均分,按平均分降序排序答案:SELECTs.class,COUNT(DISTINCTs.id)AS学生人数,AVG(sc.score)AS平均分FROMstudentsLEFTJOINscorescONs.id=sc.student_idGROUPBYs.classORDERBY平均分DESC;3、查询成绩最高的学生信息答案:SELECTs.*,sc.scoreFR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年触电事故预案试题及答案
- 山东省青岛市西海岸新区2025-2026学年六年级上学期语文期中试卷(含答案)
- 2026及未来5年中国三元乙丙橡胶防水卷材胶粘剂市场现状数据分析及前景预测报告
- 2026及未来5年中国RFID无线射频识别产品市场现状数据分析及前景预测报告
- 2026及未来5年中国FR花边玉花市场现状数据分析及前景预测报告
- 2026年5G网络运维优化考试题库及答案
- 2025年中小学教师资格考试(小学)笔试参考题库附带答案
- 尿路感染护理教学
- 2026年工业机器人系统运维员专业技能考核模拟试卷及答案详解
- 2026年残联业务模拟试题(含答案)
- 2026年中国电信应届生校园招聘笔试真题(含详细答案解析)
- 2026年中国联通网络技术岗校园招聘笔试题及答案
- 医疗美容行业服务与质量控制手册
- 通信工程项目施工方案与技术措施
- (更新)脊柱手术患者脑脊液渗漏护理专家共识(2024版)课件
- 广州市教育系统招聘“优才计划”笔试真题2024
- 有限空间安全知识培训
- 餐饮文化与传统节日
- 初中物理晋升高级(一级)职称水平考试模拟试卷有答案解析共三套
- 《炼化企业离心压缩机 干气密封技术规范》
- 三废环保管理培训
评论
0/150
提交评论