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

ESP32-S3开发环境避坑指南:VS Code+ESP-IDF离线安装全流程(附国内镜像加速)

本文提供了一份详细的ESP32-S3开发环境离线安装指南,重点解决网络依赖问题。通过整合国内镜像加速,手把手教你完成VS Code、ESP-IDF框架、工具链及Python依赖的本地化部署,实现稳定、可重复的开发环境搭建,大幅提升IoT开发效率。

peach的博客 962

开源DIY龙门架:从零构建可编程运动控制平台

运动控制是自动化与机器人技术的核心基础,它通过精确指令驱动执行机构,实现物体的定位与轨迹规划。其原理通常涉及控制器、驱动器、电机与传动机构的协同工作,核心价值在于将数字指令转化为精准的物理运动,从而解放人力并提升作业一致性。在工业自动化、桌面制造(如3D打印、激光雕刻)及教育机器人等领域应用广泛。本文聚焦于一个具体的工程实践案例:使用**铝型材**、**3D打印**零件、Arduino控制器及步进电机,从机械结构设计、电路连接到代码编写,手把手教你打造一个模块化、可扩展的开源龙门架系统。该系统不仅成本可控,

weixin_33168937的博客 618

高分六号GF-6 WFV数据处理全流程:从原始数据解压到经纬度投影转换

本文详细解析了高分六号GF-6 WFV遥感数据的完整处理流程。从原始数据解压与分块结构理解入手,指导如何安装ENVI国产卫星支持工具进行自动拼接,并重点阐述了利用RPC模型进行正射校正以消除几何畸变,以及将UTM投影转换为地理经纬度坐标的关键步骤。文章旨在帮助用户高效地将原始卫星数据转化为可直接用于农业监测、生态环境分析等领域的标准地理空间图像。

weixin_29047919的博客 196

Google Earth Engine(GEE)——将sentinel - 2影像所有波段重采样到10m分辨率 (resample 和 projection的使用)

影像重投影是将一个影像从一个坐标系投影到另一个坐标系的过程。这通常涉及到将像素从一个平面坐标系变换到另一个平面坐标系。这可以用于许多应用中,例如建立数字高程模型(DEM)和地图制图。影像重投影通常需要进行数学计算,包括转换矩阵和插值算法,以确保像素值的准确性和精度。这次我们将对哨兵2好数据中20m分辨率的波段,重采样到10m分辨率中,然后同一参与计算。

此星光明博客 3107

三步实现Java分布式追踪:像“开灯”一样简单

摘要: 本文通过三步实现Java分布式追踪: 引入依赖:配置Spring Cloud Sleuth+Zipkin,自动埋点无需代码侵入; 启动服务:REST接口自动生成Trace/Span ID,日志可验证; 可视化分析:通过Zipkin UI查看调用链耗时和拓扑关系。 亮点:AOP自动埋点、零业务代码修改、支持多服务链路追踪,助力快速定位性能瓶颈。适用于微服务诊断,生产环境可调整采样率平衡性能。(150字)

墨夶的博客 2710

RML2018.01a数据集的读取与使用

基于深度学习的自动调制识别

QAQIknow的博客 1万+

《从零学会 CST 仿真全流程》专栏简介

本专栏系统讲解CSTPCBStudio与MWSStudio在高速PCB仿真中的应用,涵盖SI/PI仿真全流程。重点介绍CSTPCBStudio用于板级信号完整性分析,CSTMWS用于3D高频电磁仿真,以及电缆、低频、多物理场等配套工具。课程以实战为导向,通过USB3.1、LPDDR4等案例,手把手教学软件操作与工程应用,适合硬件工程师、EMC工程师及电子专业学生学习。内容注重实操,弱化理论,帮助快速掌握仿真核心技能。

一只豌豆象的博客 678

LVGL hal disp(porting display)

LVGL本身是没有对接最终的显示框架的,所以到具体的某个平台上,需要自行porting。

Bigan(安)的博客 2097

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值