MySQL面试精华:char与varchar、范式、SQL执行顺序与索引详解

需积分: 5 0 下载量 14 浏览量 更新于2024-08-03 收藏 11KB TXT 举报
本文档主要围绕MySQL相关的面试题及其答案展开,涵盖了多个重要的知识点,有助于面试者准备MySQL技术面试。以下是对部分内容的详细解析: 1. **char和varchar的区别**: - char是定长字符串类型,存储时按指定长度分配空间,即使实际长度小于预设长度,也占满整个空间,这可能导致空间效率不高。 - varchar是变长字符串类型,根据实际存储的字符长度动态分配内存,空间利用率较高,但存取速度相对较慢。 - char适合固定长度的字符串,如身份证号、电话号码,而varchar适合长度不固定或变动的字符串。 2. **数据库的三大范式**: - 第一范式(1NF)确保字段不可分割,每个值都是原子性的。 - 第二范式(2NF)要求非主键字段完全依赖于主键,避免部分依赖。 - 第三范式(3NF)要求非主键字段不传递依赖于其他非主键字段,消除数据冗余。 3. **SQL语句执行顺序**: - SQL查询遵循特定顺序,包括select、distinct、聚合函数、from、join、where、group by、having、order by、limit等步骤。 4. **索引概念与优缺点**: - 索引是数据库中用于快速查找数据的数据结构,能提升查询速度和排序效率。 - 优点包括快速检索、排序优化,但缺点是增加存储空间、降低更新速度,且可能影响索引优化。 5. **索引类型**: - 普通索引允许空值和重复值; - 唯一索引要求唯一,允许空值; - 主键索引唯一且不允许空值; - 复合索引结合多个字段; - 全局索引仅在MyISAM引擎可用。 6. **索引设计优化策略**: - 优先选择唯一性索引; - 关键查询条件字段应建索引; - 对排序、分组和联合操作频繁的字段建立索引; - 控制索引数量,避免过多导致性能损失; - 对小数据量表,可能不需使用索引。 这些知识点是面试时考察MySQL数据库管理和性能调优的关键点,理解并掌握它们将有助于在实际工作和面试中展现出扎实的技能。