《MySQL面试题集》汇集了针对数据库管理系统的热门面试问题及解答,特别适合准备技术岗位面试的读者深入学习和复习。
1. 一张表里有 ID 自增主键,在插入了 17 条记录之后删除第 15、16 和 17 条记录,并重启 MySQL 后再插入一条新记录,这条新记录的 ID 取决于使用的存储引擎:
- 对于 MyISAM 表,自增主键的最大值会被保存在数据文件中。因此即使重启了数据库,自增主键的信息也不会丢失。在这种情况下,新的记录将会被赋予一个比之前删除的记录更高的ID号,比如18。
- 而对于 InnoDB 表来说,它将最大 ID 存储于内存之中。如果服务器重新启动或对表进行优化操作(OPTIMIZE),这个信息会被清除掉。因此,在上述场景中重启后插入的新数据将会被分配一个较低的ID号,如15。
2. MySQL 数据库软件是一个客户端/服务器系统,包括多线程 SQL 服务、多种后台支持和广泛的 API 和管理工具。它允许同时处理多个请求,并能够适应不同的硬件环境与操作系统类型。
3. Heap 表(也称为内存表)用于临时存储数据且仅存于 RAM 中,因此读取速度非常快但不具备持久性,在数据库关闭后所有数据都会丢失。
- 这种类型的表不支持 BLOB 或 TEXT 字段;
- 它们只允许使用比较运算符如 =、<、> 等进行简单的查询操作;
- 更重要的是 Heap 表不允许自动递增字段(AUTO_INCREMENT)的存在,并且索引不能为 NULL。
这些面试题涵盖了 MySQL 的核心特性,包括存储引擎的行为差异以及临时表的限制条件。了解和掌握这些问题可以更好地设计数据库系统并优化其性能。