MySQL常见面试题通常包括数据库基础知识、SQL语句优化、索引设计、存储引擎、事务处理、备份与恢复、性能调优等方面。以下是一些可能会在面试中遇到的题目:
-
char
和varchar
的区别是什么?char
是固定长度的字符串数据类型,varchar
是可变长度的字符串数据类型。
-
数据库的三大范式是什么?
- 第一范式(1NF):确保每列保持原子性。
- 第二范式(2NF):在1NF基础上,确保表中每一行的唯一性。
- 第三范式(3NF):在2NF基础上,表中不存在传递依赖。
-
SQL语句的执行顺序是什么?
- 从
FROM
开始,然后是JOIN
,接着是WHERE
、GROUP BY
、HAVING
、SELECT
、DISTINCT
、ORDER BY
和LIMIT
。
- 从
-
索引是什么?它的优点和缺点有哪些?
- 索引是帮助数据库快速检索数据的数据结构。
- 优点:加快数据检索速度。
- 缺点:占用存储空间,可能会降低更新表的速度。
-
索引的类型有哪些?
- 主键索引、唯一索引、复合索引、全文索引等。
-
如何设计或优化索引?
- 根据查询条件和数据访问模式设计索引,避免冗余索引,使用合适的索引类型。
-
如何避免索引失效?
- 避免在索引列上使用函数,避免使用
LIKE
以通配符开头的查询,使用IS NULL
或IS NOT NULL
等。
- 避免在索引列上使用函数,避免使用
-
InnoDB
和MyISAM
存储引擎有什么区别?InnoDB
支持事务和外键,提供行级锁定和崩溃恢复能力;MyISAM
不支持事务和外键,提供表级锁定。
-
什么是事务?事务的四大特性(ACID)是什么?
- 事务是一系列操作,要么全部成功,要么全部失败。
- ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
-
脏读、不可重复读和幻读是什么?
- 脏读:读取到其他未提交事务的更改。
- 不可重复读:在同一事务中,多次读取同一数据集合时结果不同。
- 幻读:同一事务中,读取到其他事务插入的多行记录。
-
事务的隔离级别有哪些?
- 读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)、串行化(Serializable)。
-
如何优化数据库性能?
- SQL优化、加缓存、分表、读写分离等。
-
如何定位及优化慢查询?
- 使用
EXPLAIN
查看执行计划,检查索引使用情况,优化SQL语句。
- 使用
-
drop
、truncate
和delete
的区别是什么?drop
:删除表及其数据和结构。truncate
:删除表中的所有行,但保留表结构和索引。delete
:根据WHERE
条件删除行。
这些问题覆盖了MySQL的多个方面,是面试准备中的一个很好的起点。在准备面试时,建议深入理解每个主题,并结合实际经验进行回答。