一、基础核心篇(初级 / 中级必问)
1. MySQL 是什么?核心特点有哪些?
答案要点:MySQL 是一款开源的关系型数据库(RDBMS),基于 SQL 语言,主打轻量、高性能、高可用、易部署,是互联网行业首选的数据库。核心特点:
- 支持关系型数据库特性:ACID 事务、外键、约束、多表关联查询。
- 高性能:底层优化优秀,支持海量数据存储,单表千万级数据查询依然高效。
- 多存储引擎:支持插件式引擎,最常用 InnoDB(默认)、MyISAM。
- 高可用:支持主从复制、读写分离、集群部署,避免单点故障。
- 跨平台:支持 Linux/Windows/Mac,适配所有主流服务器系统。
2. MySQL 中 InnoDB 和 MyISAM 存储引擎的区别?
✅ 核心结论:MySQL 5.5 及以后,默认存储引擎是 InnoDB。InnoDB 是事务安全型引擎,MyISAM 是性能型引擎,MyISAM 已被官方逐步淘汰。
3. char 和 varchar 的区别?varchar(5) 和 varchar(200) 的区别?
答案要点:二者都是字符串类型,核心区别是存储方式和长度固定性。
✔ 一、char 与 varchar 核心区别
- char(n):定长字符串,n 代表固定长度(0-255)。
- 特点:无论存入多少字符,都会占用 n 个字符的空间,不足补空格;查询速度极快,适合短字符串、长度固定的场景。
- 适用:手机号、身份证号、性别、状态码。
- varchar(n):变长字符串,n 代表最大长度(0-65535)。
- 特点:实际占用空间 = 真实字符长度 + 1/2 个字节(存储长度),不会补空格;查询速度略慢于 char,适合长度不固定的长字符串。
- 适用:用户名、商品标题、描述、地址等。
✔ 二、面试坑点:varchar(5) 和 varchar(200) 存储 "abc" 的区别?
✅ 标准答案:存储上无区别,性能上几乎无区别。
- 存储:两者存入 "abc" 时,实际占用的字节数完全相同。
- 性能:MySQL 只会校验「是否超过最大长度」,不会因为定义的长度大而浪费空间或变慢。
- 注意:不要无脑定义
varchar(255/65535),要按需定义,避免字段长度溢出、索引失效。
4. datetime 和 timestamp 的区别?
答案要点:二者都是日期时间类型,核心区别是存储范围、时区支持、占用空间:
- datetime:占 8 字节,存储范围
1000-01-01 ~ 9999-12-31,不支持时区转换,存入什么时间就显示什么时间。 - timestamp:占 4 字节,存储范围
1970-01-01 ~ 2038-01-19,支持时区转换,存入时会转成 UTC 时间,查询时按当前时区转回。
适用场景:业务无时区需求 → 用 datetime;有跨国/跨时区需求 → 用 timestamp;推荐用 datetime,避免 2038 年溢出问题。
5. 主键、唯一索引、普通索引、外键的区别?
✔ 核心定义 + 区别
- 主键索引(Primary Key)
- 特性:一张表只能有一个主键,主键字段非空 + 唯一,InnoDB 中主键是聚簇索引,数据按主键排序存储。


