MySQL面试题目及答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

MySQL面试题目及答案

一、基础SQL与语法

题目:用SQL查询“学生表(student)中,年龄大于20岁且来自北京的学生,按年龄降序排列,取前10条”,学生表字段:id、name、age、city。

答案:

SELECTid,name,age,city

FROMstudent

WHEREage20ANDcity=北京

ORDERBYageDESC

LIMIT10;

注:实际场景中若city字段值有“北京市”等不同格式,需先确认数据统一性,避免漏查;LIMIT在MySQL中是“限制返回行数”,若需分页可加OFFSET(如LIMIT10OFFSET20)。

题目:LEFTJOIN和INNERJOIN的区别?举个业务例子说明什么时候用LEFTJOIN。

答案:

INNERJOIN:只返回两张表中“关联字段匹配”的记录;LEFTJOIN:返回左表所有记录,右表匹配到则显示,没匹配到则右表字段为NULL。

业务例子:查询“所有订单及对应的用户信息”,订单表(order)是左表,用户表(user)是右表。即使有订单因异常(如用户注销)没匹配到用户,也需要显示订单记录,此时用LEFTJOIN:

SELECTo.order_id,o.order_time,u.user_name

FROM`order`o

LEFTJOIN`user`uONo.user_id=u.id;

二、索引相关

题目:MySQL中常用的索引类型有哪些?聚簇索引和非聚簇索引的核心区别是什么?

答案:

常用索引类型:主键索引(PRIMARYKEY)、唯一索引(UNIQUE)、普通索引(INDEX)、联合索引(多字段组合索引)、全文索引(FULLTEXT,适用于文本搜索)。

聚簇索引vs非聚簇索引:

聚簇索引:索引结构与数据存储在一起,叶子节点直接存完整数据;一张表只有一个聚簇索引(通常是主键,若无主键则选唯一非空索引,再无则自动生成隐藏主键)。

非聚簇索引:索引结构与数据分离,叶子节点存“主键值”,查询时需通过主键值回表(查聚簇索引)获取完整数据(覆盖索引可避免回表)。

例:查主键为101的用户,聚簇索引直接取数据;查普通索引(如user_name=张三),先找非聚簇索引拿到主键101,再查聚簇索引拿数据。

题目:什么情况下索引会失效?举3个常见场景。

答案:

场景1:索引列用函数/表达式操作,如WHERESUBSTR(name,1,3)=李三(name是索引列),此时无法走索引,需改成WHEREnameLIKE李三%(前缀匹配可走索引)。

场景2:索引列用不等于(!=、)、NOTIN、ISNOTNULL,如WHEREage!=20,MySQL可能放弃索引走全表扫描(若数据量极小仍可能走索引)。

场景3:联合索引不满足“最左前缀原则”,如联合索引(age,city),查询WHEREcity=上海,跳过第一个字段age,索引失效;需按“age→city”的顺序使用索引。

三、事务与隔离级别

题目:事务的ACID特性分别是什么?举个例子说明“原子性”。

答案:

ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

原子性例子:转账业务,A给B转100元,需执行两个SQL:UPDATEaccountSETmoney=money-100WHEREid=A和UPDATEaccountSETmoney=money+100WHEREid=B。原子性要求这两个操作“要么都成功,要么都失败”——若第一个执行成功、第二个失败,A的钱少了但B没多,数据不一致,此时需回滚到操作前状态。

题目:MySQL的事务隔离级别有哪些?默认级别是什么?“不可重复读”和“幻读”的区别是什么?

答案:

四个隔离级别(从低到高):读未提交(ReadUncommitted)、读已提交(ReadCommitted)、可重复读(RepeatableRead)、串行化(Serializable);MySQL默认级别是“可重复读(RR)”。

不可重复读vs幻读:

不可重复读:同一事务内,两次读同一行数据,结果不同(因中间被其他事务修改并提交)。例:事务A第一次读“id=1的age=20”,事务B改age为22并提交,事务A再读id=1的age=22。

幻读:同一事务内,两次执行相同查询条件的

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档