MySQL 数据库面试题(50 道题含答案和思维导图总结)
前言
关 于 MySQL 常 见 的 知 识 点 总 结 了 一 个 思 维 导 图 分 享 给 大 家 ,
希望对大家有所帮助!
2020 年 MySQL 数据库面试题
1、MySQL 中有哪几种锁?
( 1) 表 级 锁 : 开 销 小 , 加 锁 快 ; 不 会 出 现 死 锁 ; 锁 定 粒 度 大 , 发 生 锁 冲 突 的 概
率 最 高,并发度最低。
( 2) 行 级 锁 : 开 销 大 , 加 锁 慢 ; 会 出 现 死 锁 ; 锁 定 粒 度 最 小 , 发 生 锁 冲 突 的 概
率 最 低,并发度也最高。
( 3) 页 面 锁 : 开 销 和 加 锁 时 间 界 于 表 锁 和 行 锁 之 间 ; 会 出 现 死 锁 ; 锁 定 粒 度 界
于 表 锁和行锁之间,并发度一般。
2、MySQL 中有哪些不同的表格 ?
共有 5 种类型的表格:
(1)MyISAM
(2)Heap
(3)Merge
(4)INNODB
(5)ISAM
3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
MyISAM:
(1)不支持事务,但是每次查询都是原子的;
(2)支持表级锁,即每次操作是对整个表加锁;
(3)存储表的总行数;
(4)一个 MYISAM 表 有 三个文件 : 索 引 文件、表 结 构 文 件、数据 文
件;
(5) 采用 菲 聚集 索 引, 索 引文 件 的数 据 域存 储 指向 数 据文 件 的指 针 。
辅索引与主索引基本一致,但是辅索引不用保证唯一性。
InnoDb:
(1)支持 ACID 的事务,支持事务的四种隔离级别;
(2)支持行级锁及外键约束:因此可以支持写并发;
(3)不存储总行数:
(4)一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不
受 操 作 系 统 控 制 , 一 个 表 可 能 分 布 在 多 个 文 件 里 ) , 也 有 可 能 为 多 个
( 设 置 为 独 立 表 空 , 表 大 小 受 操 作 系 统 文 件 大 小 限 制 , 一 般 为 2G) ,
受操作系统文件大小的限制;
(5) 主键 索 引采 用 聚集 索 引( 索 引的 数 据域 存 储数 据 文件 本 身) , 辅
索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索
引 找 到 主 键 值 , 再 访 问 辅 索 引 ; 最 好 使 用 自 增 主 键 , 防 止 插 入 数 据 时 ,
为维持 B+树 结 构 , 文 件 的 大 调 整 。
4、MySQL 中 InnoDB 支持的四 种事务隔 离级别名 称 ,以及
逐级之间的区别? SQL 标准定义的四个隔离级别为:
(1)read uncommited :读到未提交数据
(2)read committed:脏 读 , 不 可 重 复 读
(3)repeatable read:可 重 读
(4)serializable :串行事物
5、CHAR 和 VARCHAR 的区别?
(1)CHAR 和 VARCHAR 类型在存储和检索方面有所 不 同
(2) CHAR 列长 度 固 定 为创 建表 时 声 明 的 长 度 , 长度 值范 围 是 1 到
255 当 CHAR 值 被 存 储 时 , 它 们 被 用 空 格 填 充 到 特 定 长 度 , 检 索
CHAR 值 时 需 删 除 尾 随 空 格 。
6、主键和候选键有什么区别?
表格的每一行都由主键唯一标识,一个表只有一个主键。
主键也是候选键。按照惯 例 ,候选键可以被指定为主键,并 且 可 以 用 于
任何外键引用。
7、myisamchk 是用来做什么的?
它用来压缩 MyISAM 表, 这 减 少 了 磁 盘 或 内 存 使 用 。
MyISAM Static 和 MyISAM Dynamic 有 什 么 区 别 ?
在 MyISAM Static 上的 所 有 字 段 有 固 定 宽 度 。动态 MyISAM 表将 具
有像 TEXT, BLOB 等字 段 , 以 适 应 不 同 长 度 的 数 据 类 型。
MyISAM Static 在受损情况下更容易恢复。
8、如果一个表有一列定义为 TIMESTAMP,将发生什么?
每当行被更改时,时间戳字段将获取当前时间戳。
列设置为 AUTO INCREMENT 时,如果 在 表 中 达 到 最 大 值 ,会发 生 什
么情况?
它 会 停 止 递 增 , 任 何 进 一 步 的 插 入 都 将 产 生 错 误 , 因 为 密 钥 已 被 使 用 。
怎样才能找出最后一次插入时分配了哪个自动增量?
LAST_INSERT_ID 将返回由 Auto_increment 分 配 的 最 后一个值,并
且不需要指定表名称。
9、你怎么看到为表格定义的所有索引?
索引是通过以下方式为表格定义的:
SHOW INDEX FROM ;
10、LIKE 声明中的%和_是什么意思?
%对应于 0 个或更多字符,_只是 LIKE 语句 中 的 一 个 字 符。