MySQL是世界上最受欢迎的关系型数据库管理系统之一,其在各种规模的企业和项目中都有广泛的应用。以下是一些关于MySQL的面试题目及其解析,涵盖了基础概念、数据类型、存储引擎、事务处理等多个方面。
1. 关于ID自增的问题,实际上取决于表使用的存储引擎。MyISAM表在数据文件中保存了自增主键的最大值,即使删除记录,重启后仍会从18开始。然而,InnoDB表只在内存中保存这个最大值,因此删除记录并重启后,新插入的记录ID将是15。
2. MySQL的技术特点包括:多线程支持、多种客户端库、灵活的后台选项、丰富的API和管理工具,以及强大的查询语言。
3. HEAP表是内存中的临时表,用于快速存储,不支持BLOB或TEXT字段,不支持AUTO_INCREMENT,索引不可为NULL。
4. MySQL的默认端口号是3306。
5. 与Oracle相比,MySQL的优势在于开源、免费、便携性、GUI工具支持以及高效的查询浏览器。
6. FLOAT和DOUBLE的区别在于存储精度和字节数,FLOAT有8位精度,4个字节,而DOUBLE有18位精度,8个字节。
7. CHAR_LENGTH返回字符数,考虑字符集;LENGTH返回字节数,不受字符集影响。
8. InnoDB支持的四种事务隔离级别分别是:读未提交(read uncommitted)、读已提交(read committed)、可重读(repeatable read)和串行化(serializable)。每种级别都提高了并发性和数据一致性,但限制也相应增加。
9. ENUM用于限制列的值,只能在创建表时预定义的一组值中选择。
10. REGEXP是正则表达式匹配,可在字符串的任何位置匹配模式。
11. CHAR是固定长度的字符串类型,VARCHAR是可变长度的,CHAR在存储时会被空格填充到指定长度,而VARCHAR不填充。
12. 字符串类型包括SET、BLOB、ENUM、CHAR、TEXT和VARCHAR。
13. 使用SELECT VERSION();可以获取MySQL的当前版本。
14. MySQL使用多种存储引擎,如InnoDB(默认,支持事务处理和外键),MyISAM(非事务,快速读取)等。
15. MySQL驱动程序允许不同编程语言与MySQL交互,如PHP、JDBC、ODBC、Python、Perl、R。