MySQL面试必备:三范式、自增ID与数据库版本查询

需积分: 0 3 下载量 12 浏览量 更新于2024-08-04 收藏 17KB DOCX 举报
"这篇资料是关于MySQL的面试复习材料,主要涵盖了数据库的三范式、自增表的特性和ID生成逻辑、获取数据库版本的方法、ACID特性以及char与varchar类型的差异等高频知识点,适用于准备面试的Java开发工程师、数据库开发工程师及MySQL技术相关人员。 1. 数据库的三范式是数据库设计的基础理论: - 第一范式(1NF):确保每列都是原子性的,不可再分的数据项。 - 第二范式(2NF):要求非主属性完全依赖于整个主键,消除部分依赖。 - 第三范式(3NF):非主属性之间不存在传递依赖,即一个非主属性不依赖于其他非主属性。 2. 自增表的ID处理在不同存储引擎下有不同的表现: - MyISAM:表中删除最后2条数据后,重启并插入新数据,ID会跳过已删除的值,因此是18。 - InnoDB:由于InnoDB只在内存中保存自增ID的最大值,重启后丢失,新插入数据的ID为15。 3. 获取MySQL版本的方法是通过SQL查询`SELECT VERSION();`。 4. ACID是数据库事务的四大特性: - 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败,不允许部分完成。 - 一致性(Consistency):事务执行前后,数据库的完整性约束未被破坏。 - 隔离性(Isolation):并发事务间的操作互不影响,如同依次执行。 - 持久性(Durability):事务一旦提交,其结果将永久保存,即使系统出现故障。 5. char和varchar是两种不同的字符串类型: - char(n):固定长度,无论实际内容多少,始终占用n个字节,空余位置填充空格,适合存储固定长度的数据,如密码的MD5值。 - varchar(n):可变长度,根据实际内容长度占用空间,额外存储长度信息,节省空间,适用于长度变化较大的数据。 在选择使用char或varchar时,需要权衡存储效率和空间占用,根据具体应用场景来决定。"