MySQL常见面试题(2024年最新)
目录
- 前言
- 1.char和varchar的区别
- 2.数据库的三大范式
- 3.你了解sql的执行顺序吗?
- 4.索引是什么
- 5.索引的优点和缺点
- 6.索引的类型
- 7.索引怎么设计(优化)
- 8.怎么避免索引失效(也属于sql优化的一种)
- 9.索引的数据类型
- 10.索引为什么使用树结构
- 11.二叉查找树、B树、B+树
- 12.为什么使用B+树不用B树
- 13.最左匹配原则
- 14.Mysql怎么查看是否使用到索引或怎么查看sql执行计划
- 15.一条sql查询非常慢,我们怎么去排查和优化?
- 16.MylSAM和InnoDB、Memory的区别
- 17.什么是事务
- 18.事务的四大特性(ACID)
- 19.脏读、不可重复读、幻读
- 20.事务的隔离级别?
- 21.怎么优化数据库
- 22.SQL优化
- 23.常用的聚合函数
- 24.几种关联查询
- 25.in和exists的区别
- 26.drop、truncate、delete的区别
前言
java最新面试题(java基础、集合、多线程、jvm、锁、算法、CAS、Redis、数据库、mybatis、spring、springMVC、springBoot、微服务)
1.char和varchar的区别
①char设置多少长度就是多少长度,varchar可以改变长度,所以char的空间利用率不如varchar的空间利用率高。
②因为长度固定,所以存取速度要比varchar快。
③char适用于固定长度的字符串,比如身份证号、手机号等,varchar适用于不固定的字符串。
2.数据库的三大范式
第一范式(1NF): 保证字段不可再分,保证原子性。
第二范式(2NF): 满足1NF前提下,表的每一列都必须和主键有关系。消除部分依赖关系。
第三范式(3NF): 满足2NF前提下,表的每一列比必须和主键有直接关系,不能是间接关系。消除传递依赖
3.你了解sql的执行顺序吗?
⑧select ⑨distinct(去重) ⑥聚合函数
①from 表1
③[inner join | left join | right join](连接) 表2
②on(连接条件) 表1.字段 = 表2.字段
④where 查询条件
⑤group by(分组) 字段
⑦having 分组过滤条件
⑩order by(排序) 字段
(图片来源网络,侵删)⑪limit(分页) 0,10
4.索引是什么
是一种高效获取数据的数据结构,相当于目录,更快的找到数据,是一个文件,占用物理空间。
(图片来源网络,侵删)5.索引的优点和缺点
优点:
①提高检索的速度。
(图片来源网络,侵删)②索引列对数据排序,降低排序成本。
③mysql 8之后引入了,隐藏索引,当一个索引被隐藏就不会被优化器所使用,就可以看出来索引对数据库的影响,有利于调优。
缺点:
①索引也是一个文件,所以会占用空间。
②降低更新的速度,因为不光要更新数据,还要更新索引。
6.索引的类型
①普通索引: 基本索引类型,允许定义索引的字段为空值和重复值。
②唯一索引: 索引的值必须唯一,允许定义索引的字段为空值。
③主键索引: 索引的值必须唯一,不可以为空。
④复合索引: 多个字段加索引,遵守最左匹配规则。
⑤全局索引: 只有在 MyISAM 引擎上才能使用。
7.索引怎么设计(优化)
①选择唯一性索引:值是唯一的,查询的更快。
②经常作为查询条件的字段加索引。
③为经常需要排序、分组和联合操作的字段建立索引:order by、group by、union(联合)、distinct(去重)等。
④限制索引个数:索引数量多,需要的磁盘空间就越多,更新表时,对索引的重构和更新就很费劲。
⑤表数据少的不建议使用索引(百万级以内):数据过少,有可能查询的速度,比遍历索引的速度都快。
⑥删除不常用和不再使用的索引。
⑦用类型小的类型做索引:比如:int和BIGINT能用int就使用int。因为类型小,查询速度快和索引占用的空间更少。
⑧使用前缀索引,要是字符串越长,那么索引占的空间越大,并且比较起来就时间就越长。
8.怎么避免索引失效(也属于sql优化的一种)
①某列使用范围查询(>、