【数据库基础知识】
数据库是用于存储、管理和检索数据的系统,它结合了计算机硬件和软件系统。在选择使用数据库的原因中,主要考虑以下几点:
1. 数据持久性:与将数据保存在内存或文件相比,数据库能确保数据即使在系统关闭后也能保持。内存保存数据虽快但不持久,而文件系统虽然能持久保存,但查询和管理效率较低。
2. SQL支持:数据库使用结构化查询语言(SQL),使得数据查询、更新和管理更为便捷和高效。
3. 管理优势:数据库系统提供了一套完整的管理工具,如备份恢复、安全性控制、并发处理等,以满足多用户环境下的需求。
【SQL和MySQL】
SQL是用于操作关系型数据库的标准语言,包括数据查询、更新、插入和删除等功能。MySQL则是一个开源、免费的关系型数据库管理系统,广泛应用于Web应用程序,特别是Java企业级开发。MySQL以其高性能、易扩展和社区支持等特点,成为开发者首选的数据库之一。
【数据库范式】
数据库设计遵循范式理论,以减少数据冗余和提高数据一致性。主要有三个基本范式:
1. 第一范式(1NF):确保每一列都是不可分割的基本数据项,不允许有重复的子字段。
2. 第二范式(2NF):在1NF基础上,非主键列必须完全依赖于整个主键,而非主键的一部分。
3. 第三范式(3NF):在2NF基础上,非主键列只能依赖于主键,不能相互依赖。
遵循这三个范式可以降低数据异常,但在实际应用中,为了性能优化,可能会适当牺牲范式原则。
【MySQL权限管理】
MySQL的权限系统通过几个特定的权限表来控制用户访问,如user、db、table_priv、columns_priv和host表。它们分别定义了用户连接权限、数据库操作权限、表级操作权限、列级操作权限以及基于主机的权限控制。
【MySQL的binlog格式】
MySQL的binlog(二进制日志)有三种格式:statement、row和mixed。它们的区别在于记录内容的详细程度和适用场景:
1. statement:记录SQL语句,节省空间,但可能因上下文信息缺失导致复制问题。
2. row:记录每一行的改动,信息完整但日志量大。
3. mixed:混合使用前两者,通常使用statement,必要时切换到row。
【MySQL数据类型】
MySQL支持多种数据类型,包括整数类型(tinyInt、smallInt、mediumInt、int、bigint)、浮点数类型(float、double)、日期和时间类型(date、time、datetime、timestamp)、字符串类型(char、varchar、text、blob等)。不同类型适用于不同场景,例如,tinyInt适合存储小整数,varchar用于可变长度的文本,timestamp用于记录时间戳等。
这些面试题涵盖了MySQL的基础知识,包括其优势、SQL语言、数据库设计原则、权限控制和数据类型,是准备MySQL相关面试的重要参考资料。理解和掌握这些知识点对于从事数据库管理和开发工作至关重要。