2020初级程序员必知:MYSQL面试题详解与数据库设计原则

0 下载量 13 浏览量 更新于2024-08-30 收藏 324KB PDF 举报
1. **数据库的重要性**: 使用数据库的主要原因是数据持久化和高效查询。将数据保存在内存中虽然存取速度快,但数据无法长期保存;文件存储虽然保证了数据永久性,但IO操作频繁且查询效率低。相比之下,数据库如MySQL(特别是关系型数据库)提供以下优势: - 数据永久保存 - 支持SQL语言,便于灵活、高效的查询和管理数据 - 对数据进行规范化(如遵循范式理论),有助于数据的一致性和减少冗余 2. **SQL简介**: SQL(Structured Query Language)是一种用于管理关系数据库的标准编程语言。MySQL是其中一种关系型数据库管理系统,由MySQL AB(现Oracle公司旗下)开发,适合Web应用和Java企业级开发。它的开源性质和易扩展性使其在众多选项中脱颖而出。 3. **数据库范式**: - 第一范式(1NF):确保数据无重复和无部分依赖。 - 第二范式(2NF):基于1NF,非主键列完全依赖于主键,而不是主键的部分。 - 第三范式(3NF):进一步确保非主键列不依赖于其他非主键属性。在设计时,应尽可能遵守范式,但在性能优化需求时可能需要适当妥协。 4. **MySQL权限管理**: MySQL使用多个权限表(user, db, table_priv, columns_priv, host)控制用户对数据库的访问,包括: - user表:全局级别的用户账户信息 - db表:数据库级别的操作权限 - table_priv表:数据表级别的操作权限 - columns_priv表:数据列级别的操作权限 - host表:细化特定主机上的数据库权限 5. **MySQL binlog格式**: MySQL的binlog支持三种格式: - statement:记录每个修改数据的SQL语句,节省空间,适合对事务完整性的严格控制。 - row:记录每一行的更改,提供了更完整的数据变更历史,但占用更多磁盘空间。 - mixed:结合了前两者,根据实际需要自动选择记录方式。 掌握这些概念是初级程序员在MySQL面试中不可或缺的基础知识,它们涵盖了数据库的选择、使用、设计规范以及权限管理和性能优化等方面,是衡量候选人技术能力的重要指标。