MySQL 面试题合集(基础篇)

MySQL常见面试题汇总(建议收藏!!!) 目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)Innodb为什么要用自增id作为主键?(5)Hash 索引和 B+ 树索引有什么区别或者说优劣呢?(6)什么是聚簇索引(6)非聚簇索引一定会回表查询吗?(6)聚簇索引和非聚簇索引的区别(6)MyISAM和InnoDB实现B+树索引方式的区别是什么?(6)MySQL中有四种索引类型,可以简单说说吗?(6)覆盖索引是什么?(6)联合索引是什么?为什么需要注意联合索引中的顺序?(6)创建的索引有没有被使用到?或者说怎 阅读详情

🎈每日定期分享 | 面试求职经验 | 个人成长

开篇寄语
面试不必死记硬背,带着GPT去面试简直降维打击!

为您推荐一款颠覆性的GPT面试助手软件:“会议面试精灵”。这款工具能够实时分析语音内容、智能识别面试问题并生成精准答案,让您轻松应对八股文题目,从容处理各类复杂面试问题。
毕竟八股文在工作中很少使用,仅作为面试的筛选工具,不值得投入过多的精力。

  

如何获取“会议面试精灵”?
- 直接访问下载链接:https://www.interviewpass.fun/
- 在搜索引擎中输入关键词


目录

1、说一下 MySQL 执行一条查询语句的内部执行过程?

2、MySQL 提示“不存在此列”是执行到哪个节点报出的?

3、MySQL 查询缓存的功能有何优缺点?

4、如何关闭 MySQL 的查询缓存功能?

5、MySQL 的常用引擎都有哪些?

6、MySQL 可以针对表级别设置数据库引擎吗?怎么设置?

7、常用的存储引擎 InnoDB 和 MyISAM 有什么区别?

8、InnoDB 有哪些特性?

9、一张自增表中有三条数据,删除了两条数据之后重启数据库,再新增一条数据,此时这条数据的 ID 是几?

10、MySQL 中什么情况会导致自增主键不能连续?

11、InnoDB 中自增主键能不能被持久化?

12、什么是独立表空间和共享表空间?它们的区别是什么?

13、如何设置独立表空间?

14、如何进行表空间收缩?

15、说一下重建表的执行流程?

16、表的结构信息存在哪里?

17、什么是覆盖索引?

18、如果把一个 InnoDB 表的主键删掉,是不是就没有主键,就没办法进行回表查询了?

19、执行一个 update 语句以后,我再去执行 hexdump 命令直接查看 ibd 文件内容,为什么没有看到数据有改变呢?

20、内存表和临时表有什么区别?

21、并发事务会带来哪些问题?

22、什么是脏读和幻读?

23、为什么会出现幻读?幻读会带来什么问题?

24、如何避免幻读?

25、如何查看 MySQL 的空闲连接?

26、MySQL 中的字符串类型都有哪些?

27、VARCHAR 和 CHAR 的区别是什么?分别适用的场景有哪些?

28、MySQL 存储金额应该使用哪种数据类型?为什么?

29、limit 3,2 的含义是什么?

30、now() 和 current_date() 有什么区别?

31、如何去重计算总条数?

32、lastinsertid() 函数功能是什么?有什么特点?

33、删除表的数据有几种方式?它们有什么区别?

34、MySQL 中支持几种模糊查询?它们有什么区别?

35、MySQL 支持枚举吗?如何实现?它的用途是什么?

36、count(column) 和 count(*) 有什么区别?

37、以下关于 count 说法正确的是?

38、为什么 InnoDB 不把总条数记录下来,查询的时候直接返回呢?

39、能否使用 show table status 中的表行数作为表的总行数直接使用?为什么?

40、以下哪个 SQL 的查询性能最高?

41、InnoDB 和 MyISAM 执行 select count(*) from t,哪个效率更高?为什么?

42、在 MySQL 中有对 count(*) 做优化吗?做了哪些优化?

43、在 InnoDB 引擎中 count(*)、count(1)、count(主键)、count(字段) 哪个性能最高?

44、MySQL 中内连接、左连接、右连接有什么区别?

45、什么是视图?如何创建视图?

46、视图有哪些优点?

47、MySQL 中“视图”的概念有几个?分别代表什么含义?

48、使用 delete 误删数据怎么找回?

49、Flashback 恢复数据的原理是什么?​​​​​​​


1、说一下 MySQL 执行一条查询语句的内部执行过程?

1、客户端先通过连接器连接到 MySQL 服务器。

2、连接器权限验证通过之后,先查询是否有查询缓存,如果有缓存(之前执行过此语句)则直接返回缓存数据,如果没有缓存则进入分析器。

3、分析器会对查询语句进行语法分析和词法分析,判断 SQL 语法是否正确,如果查询语法错误会直接返回给客户端错误信息,如果语法正确则进入优化器。

4、优化器是对查询语句进行优化处理,例如一个表里面有多个索引,优化器会判别哪个索引性能更好。

5、优化器执行完就进入执行器,执行器就开始执行语句进行查询比对了,直到查询到满足条件的所有数据,然后进行返回。

2、MySQL 提示“不存在此列”是执行到哪个节点报出的?

此错误是执行到分析器阶段报出的,因为 MySQL 会在分析器阶段检查 SQL 语句的正确性。

3、MySQL 查询缓存的功能有何优缺点?

MySQL 查询缓存功能是在连接器之后发生的,它的优点是效率高,如果已经有缓存则会直接返回结果。 查询缓存的缺点是失效太频繁导致缓存命中率比较低,任何更新表操作都会清空查询缓存,因此导致查询缓存非常容易失效。

4、如何关闭 MySQL 的查询缓存功能?

MySQL 查询缓存默认是开启的,配置 querycachetype 参数为 DEMAND(按需使用)关闭查询缓存,MySQL 8.0 之后直接删除了查询缓存的功能。

5、MySQL 的常用引擎都有哪些?

MySQL 的常用引擎有 InnoDB、MyISAM、Memory 等,从 MySQL 5.5.5 版本开始 InnoDB 就成为了默认的存储引擎。

6、MySQL 可以针对表级别设置数据库引擎吗?怎么设置?

可以针对不同的表设置不同的引擎。在 create table 语句中使用 engine=引擎名(比如Memory)来设置此表的存储引擎。完整代码如下:

create table student(
 id int primary key auto_increment,
 username varchar(120),
 age int
) ENGINE=Memory

7、常用的存储引擎 InnoDB 和 MyISAM 有什么区别?

InnoDB 和 MyISAM 最大的区别是 InnoDB 支持事务,而 MyISAM 不支持事务,它们主要区别如下:

- InnoDB 支持崩溃后安全恢复,MyISAM 不支持崩溃后安全恢复;

- InnoDB 支持行级锁,MyISAM 不支持行级锁,只支持到表锁;

- InnoDB 支持外键,MyISAM 不支持外键;

- MyISAM 性能比 InnoDB 高;

- MyISAM 支持 FULLTEXT 类型的全文索引,InnoDB 不支持 FULLTEXT 类型的全文索引,但是 InnoDB 可以使用 sphinx 插件支持全文索引,并且效果更好;

- InnoDB 主键查询性能高于 MyISAM。

8、InnoDB 有哪些特性?

1)插入缓冲(insert buffer):对于非聚集索引的插入和更新,不是每一次直接插入索引页中,而是首先判断插入的非聚集索引页是否在缓冲池中,如果在,则直接插入,否则,先放入一个插入缓冲区中。好似欺骗数据库这个非聚集的索引已经插入到叶子节点了,然后再以一定的频率执行插入缓冲和非聚集索引页子节点的合并操作,这时通常能将多个插入合并到一个操作中,这就大大提高了对非聚集索引执行插入和修改操作的性能。

2)两次写(double write):两次写给 InnoDB 带来的是可靠性,主要用来解决部分写失败(partial page write)。doublewrite 有两部分组成,一部分是内存中的 doublewrite buffer ,大小为 2M,另外一部分就是物理磁盘上的共享表空间中连续的 128 个页,即两个区,大小同样为 2M。当缓冲池的作业刷新时,并不直接写硬盘,而是通过 memcpy 函数将脏页先拷贝到内存中的 doublewrite buffer,之后通过 doublewrite buffer 再分两次写,每次写入 1M 到共享表空间的物理磁盘上,然后马上调用 fsync 函数,同步磁盘。如下图所示

format,png

3)自适应哈希索引(adaptive hash index):由于 InnoDB 不支持 hash 索引,但在某些情况下 hash 索引的效率很高,于是出现了 adaptive hash index 功能, InnoDB 存储引擎会监控对表上索引的查找,如果观察到建立 hash 索引可以提高性能的时候,则自动建立 hash 索引。

9、一张自增表中有三条数据,删除了两条数据之后重启数据库,再新增一条数据,此时这条数据的 ID 是几?

如果这张表的引擎是 MyISAM,那么 ID=4,如果是 InnoDB 那么 ID=2(MySQL 8 之前的版本)。

10、MySQL 中什么情况会导致自增主键不能连续?

以下情况会导致 MySQL 自增主键不能连续:

1、唯一主键冲突会导致自增主键不连续;

2、事务回滚也会导致自增主键不连续。

11、InnoDB 中自增主键能不能被持久化?

自增主键能不能被持久化,说的是 MySQL 重启之后 InnoDB 能不能恢复重启之前的自增列,InnoDB 在 8.0 之前是没有持久化能力的,但 MySQL 8.0 之后就把自增主键保存到 redo log(一种日志类型,下文会详细讲)中,当 MySQL 重启之后就会从 redo log 日志中恢复。

12、什么是独立表空间和共享表空间?它们的区别是什么?

共享表空间:指的是数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在 data 目录下。 

独立表空间:每一个表都将会生成以独立的文件方式来进行存储。 共享表空间和独立表空间最大的区别是如果把表放再共享表空间,即使表删除了空间也不会删除,所以表依然很大,而独立表空间如果删除表就会清除空间。

13、如何设置独立表空间?

独立表空间是由参数 innodbfileper_table 控制的,把它设置成 ON 就是独立表空间了,从 MySQL 5.6.6 版本之后,这个值就默认是 ON 了。

14、如何进行表空间收缩?

使用重建表的方式可以收缩表空间,重建表有以下三种方式:

1、alter table t engine=InnoDB

2、optmize table t

3、truncate table t

15、说一下重建表的执行流程?

1、建立一个临时文件,扫描表 t 主键的所有数据页;

2、用数据页中表 t 的记录生成 B+ 树,存储到临时文件中;

3、生成临时文件的过程中,将所有对 t 的操作记录在一个日志文件(row log)中;

4、临时文件生成后,将日志文件中的操作应用到临时文件,得到一个逻辑数据上与表 t相同的数据文件;

5、用临时文件替换表 t 的数据文件。

16、表的结构信息存在哪里?

表结构定义占有的存储空间比较小,在 MySQL 8 之前,表结构的定义信息存在以 .frm 为后缀的文件里,在 MySQL 8 之后,则允许把表结构的定义信息存在系统数据表之中。

17、什么是覆盖索引?

覆盖索引是指,索引上的信息足够满足查询请求,不需要再回到主键上去取数据。

18

计算机网络面试题合集 阅读详情

相关推荐

手把手教你如何准备技术面试

手把手教你如何准备技术面试

interviewpass的博客 1683

MySQL 面试题合集(日志篇)

crash-safe 是指发生宕机等意外情况下,服务器重启后数据依然不会丢失的情况。MySQL 为了操作的性能优化,会把数据更新先放入内存中,之后再统一更新到磁盘。当内存数据和磁盘数据内容不一致的时候,我们称这个内存页为脏页;内存数据写到磁盘后,内存的数据和磁盘上的内容就一致了,我们称为“干净页”。

interviewpass的博客 1052

mysql高频面试题合集

1.请你谈谈 MySQL 事务隔离级别,MySQL 的默认隔离级别是什么?p25 为了达到事务的四大特性,数据库定义了 4 种不同的事务隔离级别: READ-UNCOMMITTED(读取未提交):最低的隔离级别,允许脏读,也就是可能读取 到其他会话中未提交事务修改的数据,可能会导致脏读、幻读或不可重复读。  READ-COMMITTED(读取已提交): 只能读取到已经提交的数据。Oracle 等多数数 据库默认都是该级别 (不重复读),可以阻止脏读,但是幻读或不可重复读仍有可能发 生。  REPEAT

贝la的博客 5039

MySQL 面试题合集(锁篇)

MySQL 面试题合集(锁篇)

interviewpass的博客 1218

MySQL 面试题合集(项目篇)

MySQL 面试题合集(项目篇)

interviewpass的博客 984

MySQL 面试题合集(性能优化篇)

MySQL 面试题合集(性能优化篇)

interviewpass的博客 2120

MySQL 面试题合集(事务篇)

MySQL 面试题合集(事务篇)

interviewpass的博客 1000

CarPlay无线连接背后的‘握手’秘密:深入解读iAP2协议与蓝牙/Wi-Fi协同

本文深入解析了CarPlay无线连接背后的技术细节,重点探讨了iAP2协议与蓝牙/Wi-Fi的协同工作原理。从蓝牙层的UUID识别到iAP2协议的握手过程,再到Wi-Fi热点的建立与优化,详细揭示了CarPlay无线连接的安全机制和调试方法,为开发者提供了实用的技术参考。

weixin_42520573的博客 475

OpenHarmony系统参数权限配置避坑指南:从param get/set失败到SELinux标签实战

本文深入解析OpenHarmony系统参数权限配置的常见问题与解决方案,涵盖DAC和SELinux双重权限控制机制。通过实战案例演示如何配置`param get/set`权限,解决'Permission denied'错误,并提供三方应用访问参数的安全方案,帮助开发者高效完成系统调试与优化。

weixin_27013291的博客 449

无GPS室内飞行:基于PX4与MID360的FAST-LIO定点悬停实战解析

本文详细解析了基于PX4飞控与大疆MID360激光雷达的无GPS室内飞行技术,重点介绍了FAST-LIO算法在定点悬停中的应用。通过硬件配置、软件环境搭建、坐标系转换等实战经验,帮助开发者解决室内定位难题,实现精准悬停与稳定飞行。

weixin_29056781的博客 262

3D打印必备:如何用Blender将NWD文件转成STL(附精度调整技巧)

本文详细介绍了如何使用Blender将NWD文件转换为STL格式,特别针对3D打印需求提供了精度调整技巧。从环境准备到分步转换流程,再到3D打印专属优化策略,帮助设计师解决破面、尺寸偏差等常见问题,实现高效、精准的格式转换。

week9的博客 272

VXLAN技术详解

VXLAN(虚拟可扩展局域网)是一种Overlay二层虚拟化技术,通过MAC-in-UDP封装在IP网络上构建大规模虚拟二层网络。核心组件包括VTEP(隧道端点)、24位VNI(支持1600万个虚拟网络)和VXLAN网关。相比VLAN,VXLAN具有超大规模扩展、跨三层互联、支持虚拟机无缝迁移等优势,适用于云数据中心多租户隔离、跨数据中心互联等场景。其基于IP路由的封装方式无需改造物理网络,为现代云网络提供了弹性、安全的虚拟化解决方案。

kjkdd的博客 595

51单片机AHT20-21源代码

传感器输出经过 标定的数字信号,标准 I 2 C 格式。AHT20 配有一个全新设计的 ASIC专用芯片、一 个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,其 性能已经大大提升甚至超出了前一代传感器的可靠性水平,新一代温湿度传感器, 经过改进使其在恶劣环境下的性能更稳定。但是现在网上的大多数原码都是针对stm32等的这种多位单片机,而我们都知道51单片机是8位单片机,无法对浮点数进行运算,对32位的整数计算有时候也不是很准确,所以我对网上stm32的例程进行了修改。...

wd0710的博客 4548

AI Agent 架构的底层原理与核心机制

AI Agent五层架构实现智能闭环运转:1)感知层负责多模态信息输入与预处理;2)记忆层分类存储短期/长期记忆及知识库;3)认知层通过ReAct推理和反思机制进行决策规划;4)工具层调用外部API扩展能力边界;5)执行层完成任务输出并形成反馈闭环。五层架构通过"输入-处理-输出-优化"的联动机制,使Agent具备自主决策、持续学习和任务执行能力,突破传统LLM的局限,实现从信息处理到实际落地的完整智能体系。

女王の专属领地 494

深入解析:AndroidManifest.xml 与 Qt 6.7.0 的整合

本文探讨了在Qt 6.7.0和CMake构建Android应用时,AndroidManifest.xml未被正确识别的问题。通过分析CMake配置错误、文件路径问题等可能原因,提出了在CMakeLists.txt中明确指定路径、确保目录结构正确等解决方案,并给出了示例项目演示。文章强调正确配置AndroidManifest.xml对获取权限和应用功能的重要性,为Qt开发者提供了实用的调试建议。

2501_90323865的博客 110

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 数据库面试题合集
下一篇: MySQL 面试题合集(索引篇)
interviewpass
博客等级 码龄3年 521粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值