MySQL高频面试题及答案 MySQL是一种关系型数据库管理系统,广泛应用于各种Web应用程序中。以下是36道高频MySQL面试题及答案,涵盖了MySQL的基础知识、索引、查询优化、数据库设计等方面。 1. NOW()和CURRENT_DATE()有什么区别? NOW()命令用于显示当前年份、月份、日期、小时、分钟和秒。CURRENT_DATE()仅显示当前年份、月份和日期。 2. CHAR和VARCHAR的区别? CHAR和VARCHAR类型在存储和检索方面有所不同。CHAR列长度固定为创建表时声明的长度,范围值是1到255。当CHAR值被存储时,它们被用空格填充到特定长度,检索CHAR值时需删除尾随空格。 3. 主键索引与唯一索引的区别 主键是种约束,唯一索引是一种索引,两者在本质上是不同的。主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。唯一性索引列允许空值,而主键列不允许为空值。 4. MySQL中有哪些不同的表格? 共有五种类型的表格:MyISAM、Heap、Merge、INNODB、ISAM。 5. SQL的生命周期? SQL的生命周期包括:应用服务器与数据库服务器建立连接、数据库进程拿到请求SQL、解析并生成执行计划、执行、读取数据到内存并进行逻辑处理、通过步骤一的连接,发送结果到客户端、关闭连接,释放资源。 6. 你怎么看到为表格定义的所有索引? 索引是通过以下方式为表格定义的:SHOW INDEX FROM <tablename>; 7. 数据库为什么使用B+树而不是B树 B树只适合随机检索,而B+树同时支持随机检索和顺序检索。B+树空间利用率更高,减少I/O次数,磁盘读写代价更低。 8. 数据库三大范式是什么 第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。 9. 怎么优化SQL查询语句? 对查询进行优化,应该尽量避免全表扫描,首先应考虑在WHERE及ORDER BY涉及的列上建立索引。使用索引可以提高查询效率。SELECT子句中避免使用*号,尽量全部大写SQL。应尽量避免在WHERE子句中对字段进行IS NULL值判断,否则将导致引擎放弃使用索引而进行全表扫描。 10. 覆盖索引、回表等这些,了解过吗? 覆盖索引:查询列要被所建的索引覆盖,不必从数据表中读取。回表:二级索引无法直接查询所有列的数据,所以通过二级索引查询到聚簇索引后,再查询到想要的数据,这种通过二级索引查询出来的过程,就叫做回表。 11. MySQL数据库CPU飙升的话,要怎么处理呢? 排查过程:使用top命令观察,确定是MySQLd导致还是其他原因。如果是MySQLd导致的,show processlist,查看session列表,找到问题所在。 这些问题涵盖了MySQL的基础知识、索引、查询优化、数据库设计等方面,帮助读者更好地理解MySQL的工作原理和应用场景。
剩余10页未读,继续阅读
- 粉丝: 3w+
- 资源: 18
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- sensors-18-03721.pdf
- Facebook.apk
- 推荐一款JTools的call-this-method插件
- json的合法基色来自红包东i请各位
- 项目采用YOLO V4算法模型进行目标检测,使用Deep SORT目标跟踪算法 .zip
- 针对实时视频流和静态图像实现的对象检测和跟踪算法 .zip
- 部署 yolox 算法使用 deepstream.zip
- 基于webmagic、springboot和mybatis的MagicToe Java爬虫设计源码
- 通过实时流协议 (RTSP) 使用 Yolo、OpenCV 和 Python 进行深度学习的对象检测.zip
- 基于Python和HTML的tb商品列表查询分析设计源码