MySQL面试深度解析:核心知识点与笔试题

需积分: 44 18 下载量 16 浏览量 更新于2024-07-14 收藏 2.58MB PDF 举报
"这份资料是2021年春季招聘中关于MySQL的高频面试题集,涵盖了数据库基础知识、MySQL核心概念以及操作实践等多个方面。旨在帮助求职者准备MySQL相关的技术面试,提升对数据库理论和实战的理解。" 1. 主键、外键、超键和候选键是数据库关系模型中的关键概念。主键是唯一标识表中每一行的非空列,外键用于建立和另一个表的关联,超键是能够唯一标识一组元组的键,而候选键是在一个表中能够唯一标识一行的最小属性集。 2. 自增列作为主键常用于序列化数据,确保每次插入新行时自动分配唯一的ID,减少冲突并简化管理。 3. 触发器是预定义的SQL语句,当满足特定条件时自动执行,常用于实现复杂的业务规则或数据完整性。 4. 存储过程是一组预编译的SQL语句,可由应用程序调用执行。在MySQL中,可以使用`CALL`语句调用存储过程。 5. 存储过程的优点包括提高性能(因为预编译)、降低网络流量(一次性发送多个操作)、增强安全性和封装业务逻辑。缺点可能包括调试困难、难以维护以及可能导致事务控制复杂。 6. 存储过程和函数的主要区别在于函数必须有返回值,而存储过程可以没有;函数可以在查询中直接使用,而存储过程需要调用执行。 7. 视图是虚拟表,基于查询结果创建,提供了一种抽象数据的方式。游标允许在结果集中逐行处理数据。 8. 视图的优点包括简化查询、提供安全性(只显示所需数据)和数据抽象,缺点可能涉及性能损失和不能更新所有类型的视图。 9. `DROP`删除整个表,`TRUNCATE`清空表但保留结构,`DELETE`可以删除部分或全部记录,但速度较慢且可以带有WHERE条件。 10. 临时表在会话期间存在,会话结束时自动删除,用于存储中间结果。 11. 非关系型数据库(如NoSQL)和关系型数据库(如MySQL)的主要区别在于数据结构和模式灵活性。非关系型数据库通常更适合大数据、高并发和分布式系统,而关系型数据库保证ACID属性,适用于事务性场景。 12. 数据库范式是规范化设计的理论基础,通过消除冗余和依赖,提高数据一致性。设计数据表时应遵循范式原则,例如第三范式(3NF)要求表中不存在非主属性对候选键的传递依赖。 13. 内连接返回两个表中匹配的记录,外连接(左、右、全)包含不匹配的记录,交叉连接产生所有可能的组合,笛卡尔积是无连接条件的交叉连接。 14. `VARCHAR`适合存储可变长度的字符串,节省空间;`CHAR`存储固定长度字符串,浪费空间但效率较高。 15. SQL语言通常分为DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)和DCL(数据控制语言)。 16. `%`在`LIKE`中代表任意字符序列,`_`代表单个字符。 17. `COUNT(*)`计算行数,`COUNT(1)`相同,`COUNT(column)`只计数非NULL的column值。 18. 最左前缀原则是索引查询优化的关键,查询应从索引的最左边开始匹配。 19. 索引是一种数据结构,加速数据检索。常见的有B树和哈希索引。 20. 索引优点是加快查询速度,缺点是占用存储空间、写操作慢(因需更新索引)和可能导致数据碎片。 21. 适合建索引的字段通常是经常出现在WHERE子句中、数据分布均匀且查询性能要求高的列。 22. B+Tree索引适用于范围查询和排序,而哈希索引适用于等值查询,但不支持范围查询和排序。 23. B+Tree的叶子节点包含所有关键字,非叶子节点仅包含指向子节点的指针,适合数据库索引,而B树的叶子节点可能不相邻,不那么适合数据库存储。 24. B+Tree的优化特性使其更适合文件索引和数据库索引,如所有数据都在叶子节点,利于范围查询和顺序访问,且分支因子大,缓存效果好。 25. 聚集索引(主键索引)的键值与行数据存储在一起,而非聚集索引则分开存储,非聚集索引查找需要两次定位。 以上是对MySQL面试题集的部分解析,涵盖了数据库基础、MySQL核心特性和操作等内容,是准备MySQL面试的重要参考资料。