MySQL面试深度解析:事务、索引与存储引擎

需积分: 2 2 下载量 196 浏览量 更新于2024-08-04 收藏 4KB TXT 举报
"这篇资料包含了MySQL面试中常见的各种问题,涉及事务处理、索引机制、存储引擎、数据类型以及数据库优化等多个方面,是面试准备的重要参考资料。" 在MySQL面试中,掌握以下知识点至关重要: 1. **数据库三大范式**:第一范式(1NF)要求每个字段不可再分;第二范式(2NF)基于1NF,要求消除部分依赖;第三范式(3NF)基于2NF,要求消除传递依赖。 2. **权限管理**:MySQL的权限相关表包括`user`, `db`, `table_priv`, `column_priv`等,用于控制用户对数据库、表、列的操作权限。 3. **MySQL的binlog格式**:主要有ROW、STATEMENT和MIXED三种,ROW记录每个修改操作的具体内容,STATEMENT记录整个SQL语句,MIXED根据情况自动选择。 4. **数据类型**:MySQL支持多种数据类型,如INT、VARCHAR、TEXT、DATE、TIMESTAMP等,选择合适的数据类型对于存储效率和空间使用至关重要。 5. **MyISAM与InnoDB引擎**:MyISAM不支持事务,适合读多写少的情况;InnoDB支持事务,是默认引擎,适合需要事务处理的场景。 6. **索引类型**:主要分为唯一索引、主键索引、普通索引、全文索引、空间索引等。索引的数据结构包括B树(B+树)和哈希。 7. **索引优缺点**:优点是加快查询速度,缺点是占用存储空间,且插入、更新、删除操作会慢些。 8. **索引设计原则**:应考虑查询频率、数据分布、字段长度等因素,避免过度索引,合理使用联合索引。 9. **事务四大特性**(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 10. **事务隔离级别**:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)、串行化(SERIALIZABLE),MySQL默认为可重复读。 11. **锁机制**:包括表锁、页锁、行锁等,InnoDB引擎使用行锁来提高并发性能,但也可能导致死锁。 12. **视图**:视图是虚拟表,不实际存储数据,提供简化查询和安全性。视图的优缺点在于提供抽象和安全性,但可能影响性能。 13. **游标**:游标允许程序逐行处理结果集,常用于循环和条件判断。 14. **存储过程和函数**:存储过程是一组预编译的SQL语句,可提高执行效率;函数返回一个值,常用于计算。 15. **触发器**:在特定事件发生时自动执行的SQL语句,用于实现业务逻辑。 16. **SQL语句分类**:DQL(数据查询语言)、DML(数据操纵语言)、DDL(数据定义语言)、DCL(数据控制语言)。 17. **键的种类**:超键、候选键、主键、外键,它们用于确保数据的唯一性和完整性。 18. **SQL约束**:包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY等,用于限制数据的输入。 19. **关联查询**:包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)等。 20. **子查询**:嵌套在其他SQL语句中的查询,可作为表达式、条件或返回结果。 了解这些知识点将帮助你更好地准备MySQL相关的面试,提升在面试中的表现。