MySQL的过程

沉默王二知乎优质文章约 2891 字大约 10 分钟

大家好,我是HaC,这篇文章来给大家分享一下我自学MySQL的历程、

记得我当初入门SQL,用的是SQLServer,老实说,真的不好用,光是安装这个软件都花了几天的时间,因为期间崩溃了几次还无法连接。

后来接触了MySQL,因为看到网上说,大部分的业务都是用的MySQL,于是我就踏上了MySQL的道路。

以下是我的一些学习MySQL的时间线:

入门看的是菜鸟的SQL教程(下面讲到),实习期间看的是《MySQL是怎么样运行的》,一本简单介绍SQL原理稍微深入的书籍。

正式工作后接触了大量的金融业务,需要大量的报表和SQL调优,于是又看了《MySQL实战45讲-丁奇》,这是丁奇老师在极客时间的一门课程,讲的非常好,还有就是《MySQL排错指南》。

看完这俩,对我的MySQL能力有了质的飞跃(其实也就是豁然开朗的感觉)。因为历史遗留的SQL随着数据量激增运行太耗时了,后来开始结合慢日志进行排查和优化,对锁、binlog、redolog、索引等有了深刻印象。也相辅相成吧,结果就是让我的SQL能力也更强了。

**目前(2022年03月)**停留在以下说到的第四部分——进阶阶段。这部分学习起来十分吃力,主要还是用不上,你说我想搭个高可用的分库分表数据库,领导也不放心让我搞啊,也只能是偶尔翻翻书,有个大概的印象,万一以后再用到了,我再系统的翻翻书,看看网上的案例就行了。

嗯~以上大概就是我的学习过程了。

具体过程在下面慢慢详说。


SQL开篇

数据是存储在数据库的,开发人员要操作数据库进行数据的增删改查就需要SQL语言

SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。

虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。

因为目前的主流数据库有:

  • MySQL
  • Qracle
  • SQLServer
  • MongoDB
  • PostgreSQL
  • ......

因为有不同的数据库,所以会有不同版本的SQL,但是区别并不是很大。

这里建议学习 MySQL ,因为上手简单,而且MySQL是一个轻量级的数据库。

1、入门

1.1、安装数据库

上面说到建议学习MySQL作为数据库语言,安装数据库可以参考:

https://www.runoob.com/mysql/mysql-install.htmlopen in new window

安装完成了,可以使用一个可视化的工具:Navicat

这样就可以简单操作数据库了:

1.2、上手SQL语句

菜鸟教程SQL快速上手:

https://www.runoob.com/sql/sql-tutorial.htmlopen in new window

我当初就是从这里入门的,这个教程包含了最基础的增删改查语句。

一些最重要的 SQL 命令:

  • SELECT - 从数据库中提取数据
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

可以按照分类进行记住它们,SQL语言包括数据定义(DDL)、数据操纵(DML),数据控制(DCL)和数据查询(DQL)四个部分:

  • 数据定义(DDL)

Create Table,Alter Table,Drop Table, Craete/Drop Index等

  • 数据操纵(DML)

select ,insert,update,delete,

  • 数据控制(DCL)

grant,revoke

  • 数据查询(DQL)

select

2、夯实—看书

菜鸟教程的教程没有讲得很细,很适合快速上手的小伙伴v,如果你是时间充足,建议再看几本书:

《SQL基础教程第2版 ([日]MICK 著)》

介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高编程能力。每章结尾设置有练习题,帮助读者检验对各章内容的理解程度。

这本书也是基础入门的数据,讲述了很多SQL的知识点,它是以PostgreSQL 作为教程的,这本书的好处就是有大量的图片。

⭐️适合人群:初入门SQL的小伙伴

学完基础的MySQL语法,接下来就可以进行练习了,一个在线练习SQL的网站:

https://www.nowcoder.com/ta/sqlopen in new window

⬆️⬆️

以上这里的SQL基本语法是必须掌握的,如果你是测试人员、业务人员,数据分析岗,或者实习,一般掌握到这里就可以了。

我实习也就是掌握到了这部分。


下面这部分是针对后端开发人员的提升⬇️⬇️

《MySQL是怎样运行的:从根儿上理解MySQL》

这本书稍微深入讲述了MySQL是怎么样运行的,不再单独介绍简单增删改查语句,

各部分简介如下:

  • 第1部分(第1章~第3章):以只会写增删改查语句的小白身份重新审视MySQL到底是个什么东西,介绍MySQL的服务器程序和客户端程序有哪些、启动选项和系统变量以及字符集的一些事情。
  • 第2部分(第4章~第9章):唠叨记录、页面、索引、表空间的结构和用法。第2部分是全篇的基础,后边的章节都依赖于这些结构。
  • 第3部分(第10章~第17章):介绍同学们工作中经常遇到的查询优化问题,比如单表查询是如何执行的,连接查询是怎么执行的,MySQL基于成本和规则的优化是个什么东西。本部分还十分详细的介绍如何查看Explain语句的执行结果。
  • 第4部分(第18章~第22章):介绍为什么会有事务的概念,以及MySQL是如何实现事务的,其中包括redo日志、undo日志、MVCC、各种锁的细节等。

目录大致如下:

⭐️适合人群:

  • 刚刚学完SQL基础的同学;
  • 被数据库问题折磨的求职者;
  • 天天被DBA逼着优化SQL的业务开发小伙伴;
  • 菜鸟DBA和不是非常菜的DBA小伙伴;
  • 对MySQL内核有强烈兴趣但一看源码就发懵的小伙伴。

实战部分是针对日常业务工作多,不知道如何定位MySQL错误问题的学习,这部分可以快速让你学习到日常错误的例子,可以快速让你上手MySQL中有哪些谨记的法则:⬇️⬇️

3、实战

《MySQL排错指南》

MySQL排错指南由Oracle公司的技术支持工程师编写,详细阐述了MySQL故障诊断及处理中的知识,教会读者如何深入浅出地定位、分析并解决各种MySQL数据库的故障。

涵盖了解决MySQL问题的基本技巧、MySQL中的并发问题、服务配置的影响、MySQL硬件和运行环境相关的问题、复制备份中的故障排除、故障排除使用的技术和工具,以及一些MySQL故障排除的最佳实践。此外,本书的附录中还包含了可以帮助读者解决MySQL疑难问题的一些有用资源。

《MySQL实战45讲-丁奇》

极客时间丁奇老师的一门课程,共分为两部分内容:

  • 基础篇,深入浅出地讲述MySQL核心知识,涵盖MySQL基础架构、日志系统、事务隔离、锁等内容。
  • 实践篇。将从一个个关键的数据库问题出发,分析数据库原理,并给出实践指导。

以实战中的常见问题为切入点,带你剖析现象背后的本质原因,作者列巨额了36个MySQL常见痛点问题解析,分享一条高效的学习路径,旨在给你一个从理论到实战的系统性指导。

⭐️以上适合人群:

  • 1~3年工作经验的开发人员
  • 运维人员

⬇️⬇️进阶这部分是针对DBA和高级开发人员的,这部分内容更为深入,但是这也仅仅停留在理论,像阿里这种大公司,看重的更多是解决方案,比如说分库分表、binlog日志保存、主从同步、容灾等等。

先理论再实战。

不建议死磕这部分内容,可以有个大概印象就行了。

4、进阶

MySQL较为深入的原理网上基本都很难找得到答案,要想深入理解一下MySQL,个人觉得必须是要看书的,像MySQL的运行原理、索引、存储引擎、并发、性能、锁、事务管理、备份与恢复等等。

推荐书籍:

《MySQL技术内幕:InnoDB存储引擎》

国内唯一二本有关InnoDB的著作,详细介绍了MySQL的系统架构和各种各样普遍的存储引擎及其他们中间的较为:

  • 包含InnoDB存储引擎的系统架构、运行内存中的数据结构
  • 应用场景InnoDB存储引擎的表和页的物理学存储、数据库索引与优化算法、文档、锁、事务管理、备份与恢复
  • InnoDB的特性调优等关键的专业知、InnoDB存储引擎源码的编译和调节。

《高性能MySQL》

内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。

⭐️这两本书适合人群:

  • 期待搭建和管理方法性能、高可用性的MySQL数据库的开发人员和DBA

MySQL官方文档

另外,可以试读一下MySQL的官方文档:https://dev.mysql.com/doc/open in new window

有一些MySQL的新特性,MySQL的官方文档都有了最新的介绍,看书是无法第一时间知道最新的特性,所以看官方文档是个不错的选择。


关于以上的电子书的的下载,可以在这里找到:

https://rain.baimuxym.cn/article/34#menu_15open in new window

参考链接:https://zhuanlan.zhihu.com/p/360523125open in new window,整理:沉默王二