葵花宝典-MYSQL常见面试问题

预计阅读时间: 4分钟

在这里插入图片描述
作为一位JAVA工程师,不论你是初级程序员,还是中级程序员,高级程序员,MYSQL面试题是一定会问的,这个是考验你对数据库了解的知识有多少。

回顾一下MYSQL系列文章:
1.如何使用explain关键字优化SQL
2.MYSQL表锁和行锁
在我们平时面试过程中,那些mysql面试题是经常被问到的呢?你有哪些问题是不会的呢?趁热打铁赶紧巩固一下mysql的知识吧。

1.mysql事务的基本特征和事务隔离级别

四大特性:原子性,一致性,隔离性,持久性;隔离级别:读未提交,不可以重复读,可重复读,串行化。

2.说一说mysql脏读、不可重复读、幻读

脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据;不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致;幻读:幻读解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态。

3.mysql数据表类型有哪些?

MyIASM、InnoDB、HEAP、ISAM、MERGE、DBD(能回复前2个即可)

4.mysql的MyIASM和InnoDB引擎,各有什么特点?

 MyIASM:不支持事务,表锁,读写互相阻塞,只会缓存索引;

 InnoDB:支持事务,行锁,读写阻塞与事务隔离级别相关,不仅缓存索引还缓存数据

5.数据库三大范式

第一范式:数据库表中的字段都是单一属性的,不可再分(保持数据的原子性);第二范式:第二范式必须符合第一范式,非主属性必须完全依赖于主键。第三范式:在满足第二范式的基础上,在实体中不存在其他实体中的非主键属性,传递函数依赖于主键属性,确保数据表中的每一列数据都和主键直接相关,而不能间接相关(表中字段[非主键]不存在对主键的传递依赖)

6.你对sql的优化了解有多少,举例说明一下,至少5个

查询不要使用select *;使用连接(join)查询代替子查询;用 exists 代替 in ;尽量避免在 where 子句中使用 or 来连接条件;ORDER BY + LIMIT组合的索引优化;模糊查询 "%name%"改成”name%“。避免全表扫。还有很多。。。。

7.除了CRUD的关键字,你还会使用哪些MYSQL关键字?

show,explain,distinct,between and ,limit,order by

8.你对索引了解多少,它有什么作用,并且优缺点有哪些?

索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索;索引对于查询比较快,索引对于增删改会比较慢

9.你是怎么样设计索引的?使用索引有哪些注意的事项?

索引应该建在选择性高的字段上(键值唯一的记录数/总记录条数),选择性越高索引的效果越好、价值越大,唯一索引的选择性最高;

组合索引中字段的顺序,选择性越高的字段排在最前面;

where条件中包含两个选择性高的字段时,可以考虑分别创建索引,引擎会同时使用两个索引(在OR条件下,应该说必须分开建索引);

不要重复创建彼此有包含关系的索引,如index1(a,b,c) 、index2(a,b)、index3(a);

组合索引的字段不要过多,如果超过4个字段,一般需要考虑拆分成多个单列索引或更为简单的组合索引

设计所以的字段的值不能是NULL,否则索引失效

10.你有对mysql表分区有了解多少?有多少种分区类型,说一下他们的特点

Range分区,基于一个给定连续区间范围,把数据分配不同的分区

List分区,类似Range分区,区别是List分区是基于枚举出的值列表分区,Range分区是基于给定的连续区间范围分区

Hash分区,基于给定的区间个数,把数据分配到不同的分区

Key分区,类似Hash分区

精选文章推荐

★我的springboot代码生成器

★Java代码生成器讲解,教你如何生成entity

★使用谷歌浏览的你,十大必备插件你安装了吗?

★我对前后端联调接口规范的看法

在这里插入图片描述

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值