2021年最全mysql学习之路——从入门到进阶史上最全的学习路线

Java高级面试 Java高级面试     2023-01-13     471

关键词:

在校招面试中,mysql 被问到频率是真的高,当初为了能够在 mysql 这块加分,看了不少书籍,在网上也找了不少资料,庆幸的是,每次面试官问到 mysql 相关知识,我基本都能对答如流,而且还能从一个小的知识点扯出一大堆的那种。

所以呢,今天帅地想给大家分享一下我都学习了啥,文中会给出书籍 + 看过的资料

一、入门

mysql 入门随便找一个教程就可以了,我看的是《mysql必知必会》这本书,跟着书敲代码即可,感觉几天时间就可以快速刷完了,反正命令不用死记硬背,需要用的时候,翻开书本会用就行了。

后面去刷一刷 sql 的练习题,例如去 牛客网把 sql 相关的几十道练习题安排了,就大致都记住了(链接直达:
https://www.nowcoder.com/activity/oj?tab=1)。

入门这块没啥好讲的,面试大部分问的都是「原理」相关,而《mysql必知必会》这本书,就真的只是让你来使用 sql 而已,原理讲得比较少。

二、进阶

面试造火箭,工作拧螺丝,虽然工作时我们都在使用基本的 sql,但是不好意思,面试 90% 都在问原理,例如索引,锁,日志,引擎啊,为了让大家在学习的时候有一个重点,我觉得如果掌握了如下知识,mysql 面试绝对会成为你的加分项:

1、一条 sql 语句是如何执行的?也就是说,从客户端执行了一条 sql 命令,服务端会进行哪些处理?(例如验证身份,是否启用缓存啥的)。

2、索引相关:索引是如何实现的?多种引擎的实现区别?聚族索引,非聚族索引,二级索引,唯一索引、最左匹配原则等等(非常重要)。

3、事务相关:例如事务的隔离是如何实现的?事务是如何保证原子性?不同的事务看到的数据怎么就不一样了?难道每个事务都拷贝一份视图?MVCC 的实现原理(重要)等等。

4、各种锁相关:例如表锁,行锁,间隙锁,共享锁,排他锁。这些锁的出现主要是用来解决哪些问题?(重要)

5、日志相关:redolog,binlog,undolog,这些日志的实现原理,为了解决怎么问题?日志也是非常重要的吧,面试也问得挺多。

6、数据库的主从备份、如何保证数据不丢失、如何保证高可用等等。

7、一些故障排查的命令,例如慢查询,sql 的执行计划,索引统计的刷新等等。

对于 2-4 这四个相关知识,面试被问到的频率是最高的,有时候面试会让你说一说索引,如果你知道的多的话就可以疯狂扯一波了,记得我当时总结了一套扯的模版:

先说从 B 树角度说为啥索引会快-》趁机说一下索引的其他实现方式-〉不同引擎在索引实现上的不同-》系统是如果判断是否要使用索引的-〉明明加了索引却不走索引?

只有你对各种数据结构和索引原理都懂,你才能扯得起来,对于事物和锁也是,当时面试官问了我事务是如何保证一致性的,刚好我研究过 ,redolog,binlog,undolog 这些日志,然后和面试官扯了好久。

好吧,说了这么多,其实我就是想说,你一定要对以上的知识知其所以然,不过 mysql 不像算法这些需要学习很多,所以在学习顺序方面,没啥好介绍的,按照书籍的顺序来学习即可。

下面我主要给大家推荐一本看过的书以及一份贼棒的专栏,如果你把这两个都学了,在面试时基本对答如流。

(1)、书籍推荐

我最开始是买了《高性能mysql》这本书,感觉这是一本天书,扯到的东西太多了,可能也有挺多人推荐这本书的,但是我看了几章我就没看了,所以你只是想搞定面试的话,我觉得没必要去看这本。

我看的是《MySQL技术内幕:InnoDB存储引擎》这本书,不是很厚,但我觉得看起来很舒服,这本书不是很全,感觉给我最大帮助的是关于「锁」那块的知识,其次是索引的一些知识,还是值得一看的书。

如果你认真看,这本书也是几天就能看完了,内容不是很多,但是单单这本书不足以应付面试,下面我必须给大家推荐一个我自认为贼好的专栏。

目录!

每个章节下面都有详细的知识点:

具体目录:

对应的知识图谱如下:

如果需要这份文档,可以关注作者转发文章之后私信回复【MySQL】即可免费获取!

(2)、Mysql 实战 65 讲


这种专栏不像书籍系统,这种专栏更加偏向于「面试」和「实战」,可能是校招的原因,分库分表啥的问得少一些,所以我只刷了 74%,但足以应付面试。

如果你要学的话,我觉得可以先看这个专栏,之后再去看那本书籍,当然,反过来也可以,我个人是先看这个专栏。

领取地址

Mysql 的内容不算多,学起来还是很快,从 0 到 1,把《mysql必知必会》+《MySQL技术内幕:InnoDB存储引擎》 + Mysql 实战65 讲,我觉得就差不多了。

java进阶之路——从初级程序员到架构师,从小工到专家

...程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。一:编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,... 查看详情

java进阶之路——从初级程序员到架构师,从小工到专家

...程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。一:编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,... 查看详情

java进阶之路——从初级程序员到架构师,从小工到专家

...程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。一:编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,... 查看详情

java进阶之路——从初级程序员到架构师,从小工到专家

...程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。一:编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,... 查看详情

java进阶之路——从初级程序员到架构师,从小工到专家

...程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。一:编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,... 查看详情

java进阶之路——从初级程序员到架构师,从小工到专家

...程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。一:编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,... 查看详情

java进阶之路——从初级程序员到架构师,从小工到专家

...程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。一:编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,... 查看详情

java进阶之路——从初级程序员到架构师,从小工到专家

...程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。一:编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,... 查看详情

linux推荐书籍从入门到进阶带你走上大牛之路(珍藏版)

首先是关于学习技术书籍的一些心得,很多人给我留言说看不下去书,想看视频学习,我不反对看视频学习,但是编程作为一门需要不断钻研的技术,只靠看视频是注定不可能成为专家的,还是得从经典的... 查看详情

java从入门到进阶之路(十八)

在之前的文章我们介绍了一下Java中的正则表达式,本章我们来看一下Java中的Object。在日常生活中,任何事物我们都可以看做是一个对象,在编程中是同样的道理,在Java编程中其实更突出,因为Java就是一门面向对象的编程语言... 查看详情

java从入门到进阶之路(十五)

在之前的文章我们介绍了一下Java中的接口,本章我们来看一下Java中类的多态。在日常生活中,很多意思并不是我们想要的意思,如下:1、领导:“你这是什么意思?”小明:“没什么意思,意思意思。”领导:&ldqu... 查看详情

java从入门到进阶之路

在之前的文章我们介绍了一下Java类的重写及与重载的区别,本章我们来看一下Java类的private,static,final。我们在之前引入Java类概念的时候是通过商场收银台来引入的,如下:如果我们使用刷卡的形式进行付账,我们需要出示一... 查看详情

java从入门到进阶之路(十四)

在之前的文章我们介绍了一下Java中的抽象类和抽象方法,本章我们来看一下Java中的接口。在日常生活中,我们会接触到很多类似接口的问题,比如USB接口,我们在电脑上插鼠标,键盘,U盘的时候不用去考虑它到底能不能插进去... 查看详情

koa2从入门到进阶之路(代码片段)

之前的文章我们介绍了一下koapost提交数据及koa-bodyparser中间件,本篇文章我们来看一下 koa-static静态资源中间件。 我们在之前的目录想引入外部的js,css,img等静态资源该如何获取呢?我们首先先按照之前的思维按照相对... 查看详情

github教程史上最全github使用方法:github入门到精通

【初识Github】首先让我们大家一起喊一句“HelloGithub”。YEAH!就是这样。Git是一个分布式的版本控制系统,最初由LinusTorvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目... 查看详情

kotlin入门教程史上最全最易于理解最全面的文章(代码片段)

这里写自定义目录标题前言Kotlin学习笔记1.val和var区别2.简单变量之间的转换3.数组变量的声明4.字符串字符串与基本类型的转换字符串常用方法字符串模板及其拼接5.容器集合Set/MutableSet队列List/MutableList映射Map/MutableMap6.条件分支... 查看详情

java进阶之路——从初级程序员到架构师,从小工到专家

怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题。希望这... 查看详情

python如何入门?从零基础到进阶,非常详细的python速成之路!(代码片段)

...ython如何开始学?不管你是否有编程经验,如果要学习Python这个编程语言,你都得有一个指南针,否则会走很多学习上的弯路。我就是那个走了很多弯路的人,刚开始学习Python的时候,在网上到处搜集资料&... 查看详情