开篇词 | 在实战中学习,是解锁MySQL技能的最佳方法

你好,我是朱晓峰。

工作二十多年来,我一直在和MySQL打交道。我曾任摩根大通银行技术部副总裁,带领团队为纽约、东京等分支银行提供数据存储和安全服务。目前,正致力于开发基于MySQL的管理信息系统,率领团队为包括国家开发银行、百度在线、北京西站等大型企业在内的客户提供了信息服务,并获得了11项软件著作权(比如商业数据管理系统、云POS系统等)。

因为具备丰富的MySQL开发经验,从2015年起,我受聘担任数据应用学院客座讲师,开始制作职业技术培训课程。我和团队开发了一个为期2周、30个课时的MySQL入门集训课。我们打破了传统的教学模式,不去讲零碎的知识点,而是借助一个实际项目去讲必备技能,帮助数百名初学者迅速掌握了MySQL的基本操作和核心技能。经过2周的集中培训,有几十位学生顺利进入谷歌、苹果和亚马逊等公司。

多年的项目开发以及培训经历,让我深刻地认识到,熟练使用MySQL,对技术人来说变得越来越重要,是我们拿到心仪Offer的敲门砖。

要知道,MySQL的入门门槛非常低,还具有免费、开放源码等优势,可以满足我们的多样化需求,是目前被广泛使用的数据库之一。

看到这里,你可能会问:“我知道学习MySQL很重要,也花了很多时间去学习,可是学来学去,还是连最简单的实际问题都无法解决,该怎么办呢?”

别着急,接下来我们就来聊聊高效的MySQL学习方法。

为什么学了很多知识,你依然不会用MySQL解决实际问题?

很多人刚开始学习MySQL时,都会面临一系列问题。

  • 市面上的MySQL资料这么多,该怎么挑选呢?
  • 我花了很多时间学习MysQL,但是最后真的遇到问题时,我发现我根本不知道怎么解决。
  • 我会一些基本的操作,但还是很容易踩到坑里。比如,我曾经把字段设置成浮点数,但我不知道它是不精准的,幸亏领导发现了,不然很可能会给项目带来损失。
  • 我储备了不少面试题,为什么一到面试就卡壳呢?
  • ……

其实,这些问题,本质上都是一个原因导致的:传统的资料都是在讲授一个个零碎的知识点,最多给出一些基础的小练习,让你进行一些简单的训练。所以,很多人花了很多时间去学习,好像懂得了很多东西,但是一遇到真实的项目问题,就会一头雾水,不知道如何用所学的知识去解决实际问题,更没有能力给出完整的解决方案。

我做过项目主管,也长期带团队,深知在工作中,最重要的绝对不是你的知识储备量,而是你解决实际问题的能力。但不幸的是,我见过太多面试时表现优异的人,最终却连试用期都过不了。

说到这里,我特别想和你分享一下我曾面试过的一个应届生的故事。

他是一名计算机专业的研究生,讲起MySQL数据库的相关知识,他说得非常清楚,也很有条理,所以我对他的期望值特别高。但是,等他真正上手做项目时,我才发现,他的知识都停留在理论层面。

举个小例子,一次,我们需要开发一个餐厅的点餐系统,我就请他做数据库设计。没想到他设计出来的订单表,居然没有包含客户编号,这就导致无法通过关联查询获取客户信息。这样的数据库根本不满足业务的需求,自然是不能用的。

这并不是个例,很多人在谈到某些知识时可以出口成章,但是一遇到真实的商业环境,就会毫无头绪,或者是犯这样那样的错误。

在我看来,正确的学习方法,远比你投入的时间更重要。而实战,就是最高效的方法。

为此,我特意选择了一个连锁超市的实战项目,手把手带你从0到1走完项目全流程,不仅帮你掌握核心操作,还能让你真正拥有实战能力,能够迅速上手任何一个项目。无论你是刚刚走入职场,想要迅速解锁MySQL这项技能,还是对它感兴趣,想要转岗到MySQL开发,都可以在这个课程中达到你理想的目标。

之所以选择采用连锁超市的项目,有两个原因。

  1. 你对超市这个场景足够熟悉。我们都有去超市购物的经历,会看到货架上摆着玲琅满目的商品,各种各样的促销招牌,还有忙着扫码收银的店员……借助熟悉的场景来讲解,可以最大程度减轻你的理解成本。
  2. 超市背后的业务环节非常复杂,产生的数据也多种多样,而MySQL是处理这类业务的利器。当我们完整地解决了超市项目中所遇见的复杂数据问题时,你再去做其他任何业务,就可以更游刃有余一些。

总之,我会从实际问题出发,带你学习技术点,让你能举一反三,快速应用在实战项目中。如果用一个公式去概括,就是:项目的实际需求-->解决问题所需的知识点-->用好这些知识的实战经验

举个例子,超市的商品非常多,这些商品的名称、数量等,必须要被准确地存储、及时地更新,才能保证正常地售卖。这就是真实需求。要解决这个问题,就要用到MySQL的数据存储功能,我们就要掌握设计数据表、定义字段等知识,确保数据的存储效率最高以及数据的唯一性,同时减少错误。

不只是数据存储,我会带着你解决连锁超市所面临的一系列实际问题,从商品进货到库存查验,再到店面售卖、会员营销,等等。在这个过程中,我会给你讲解MySQL是怎样存储数据的、如何才能高效查询、如何提供经营决策的依据、如何确保数据的可靠性和安全性……

即使你没有数据库的知识基础,也完全不用担心,只要你跟着我的思路,就一定能真正地在短时间内入门MySQL,拥有解决问题的能力。

这门课是怎么设计的?

说了这么多,课程的具体设计是怎样的呢?我来介绍一下。

课程总共有四个核心模块。

  • 实践篇:我会从项目最基本的数据存储和操作开始讲起,包括创建数据库、数据表、对表中的数据进行增删改查操作、使用函数、表与表之间的关联操作等,帮你快速掌握最基本的用法。
  • 进阶篇:随着用户管理水平的不断提升,对系统的要求也越来越多,越来越复杂,会用到MySQL的许多高级功能。我会手把手带你实现这些功能,包括把程序存储在服务器上、利用突发事件来调用程序、在不改变存储结构的前提下创建虚拟表以方便查询,等等。
  • 优化篇:项目投入运营以后,随着数据的积累,性能优化的问题逐步凸显。在这个模块呢,我会给你讲一讲数据库的设计规范,还会带你创建数据模型,帮助你来理清设计思路。同时,我还会讲到提升性能的具体方法。
  • 案例篇:在课程的最后,我会手把手带你从0到1设计一个连锁超市的信息系统数据库,把前面讲到的知识点都融入到项目设计中,不仅帮你巩固所学的知识,更教会你如何灵活使用。

除此之外,在课程正式开始之前,我会用图片+音频+视频的形式,带着你安装MySQL及必备的图形化管理工具Workbench。同时,我还特意设置了一个特别放送模块,给你讲解MySQL 8.0的新特性、空间定位的方法,以及大厂的高频面试题,帮你轻松拿下面试。

最后,我还想说,MySQL是一个非常优秀的数据库,里面包含了很多经典的设计思想。虽然现在你不需要掌握得这么深,但是我还是建议你多多体会这些思想,这会让你提前建立起大局观,还可以帮助你从更高的层面去看待所遇见的实际问题。

在这门课程里,我会把我这么多年的经验毫无保留地分享给你,欢迎你来学习这门课,也欢迎你把咱们的课程分享给你的朋友或同事,邀请他们和你一起学习,共同成长。

精选留言

  • 胖丁

    2021-03-09 14:32:28

    光说不练假把式,光练不说傻把式,又说又练真把式。
    作者回复

    是这个道理

    2021-03-12 10:05:54

  • giteebravo

    2021-03-08 18:52:17


    在工作中,最重要的绝对不是你的知识储备量,而是你解决实际问题的能力。
    作者回复

    说的好,MySQL的知识和技能,只有在实际工作中解决了问题,才能体现价值,否则是没有意义的

    2021-03-09 11:44:05

  • dbtiger

    2021-03-12 13:45:51

    看来又要出现一个现象级的课程了,之前林晓斌的《mysql45讲》给了很多干货很经典。
    希望再次捡到钻石!
    作者回复

    谢谢鼓励,我们一定继续努力,让文章更出色。

    2021-03-28 09:36:46

  • 青鸟飞鱼

    2021-03-10 15:33:13

    老师你好,请教一个问题,MySQL官方一直没有出集群的解决方案,是否有被淘汰的一天,比如现在TiDB,虽然TiDB用户群体是数据量大的。
    作者回复

    MySQL官方有NDB cluster的解决方案(https://dev.mysql.com/doc/refman/8.0/en/faqs-mysql-cluster.html),可以看一下。MySQL有自己的特点,用户群体也大,Oracle应该会继续进行维护。个人觉得,MySQL的生命周期还长。

    2021-03-11 11:06:16

  • 徐志斌

    2021-07-08 15:32:20

    大三了准备实习,希望能从老师这里多吸收些养分快速成长
    作者回复

    课程的内容覆盖了MySQL的大部分知识点,相信对你会有所帮助。MySQL的实践性是非常强的,建议你跟着讲解的内容实际操作,这样会更有收获。

    2021-08-02 10:13:07

  • 耶马

    2021-03-13 01:39:46

    mysql 这一块是个人比较差的部分,希望跟着老师好好学Mysql,建筑自己的技术壁垒
    作者回复

    加油!!!!!!

    2021-03-15 15:22:20

  • Kyle Liu

    2021-03-10 10:51:59

    老师想请教一个问题:
    如果一个主库后面有3-5个从库, MongoDB 事务可以选择同步到一个、全部、大多数 slave 才标志事务成功,MySQL 在这方面有相应到机制或者策略吗。在设计一些业务时会涉及到CAP之间的取舍,想在这方便听听老师的意见。
    作者回复

    主要还是看业务场景的需要。可以通过参数sync_relay_log、sync_master_info、sync_relay_log_info等控制数据刷新到磁盘的频率。如果对数据一致性要求高,可以设置成binlog传到slave才算事物结束,可是这样对资源消耗太大。可以考虑设置一个可以接受的刷新频率,这样最多损失一个频次的操作,master宕机后,选择接收到binlog最多的slave为master,恢复后,再补上那段丢失的操作。

    2021-03-11 11:51:08

  • lxlaxsh

    2021-11-15 16:37:45

    数据存储一直是一个系统中最重要的一环,这个没学好其他一切都是空谈
    作者回复

    是的

    2022-01-16 11:25:16

  • giteebravo

    2021-03-10 07:29:57


    从项目的实际需求出发,到学习解决问题所需掌握的知识点,最后总结出用好这些知识的实战经验,形成自己的最佳实践,这就是解锁专业技能的方法!

    MySQL 起步,就从这里开始吧!
    作者回复

    讲的很好,我们一起来学习

    2021-03-11 11:57:03

  • JustDoDT

    2021-03-09 16:09:47

    学会了最全面复杂的超市案例,其他就很easy了。
    作者回复

    同意。超市项目大家都熟悉,容易理解,而业务又足够复杂,学了这样的项目,对我们上手其他项目,会很有帮助的

    2021-03-12 10:05:10

  • 水哥

    2021-03-29 17:26:22

    运维同学可以入手吗??
    作者回复

    可以的

    2021-04-21 17:16:00

  • 晓哥儿

    2021-03-15 17:26:13

    课程是真的细
    作者回复

    谢谢鼓励,希望我们的课程能帮到你。

    2021-03-20 15:29:49

  • 王川

    2024-06-13 12:11:29

    小时工(临时工)考勤系统可以用MySQL开发做小程序?
  • Hide on bush

    2022-05-23 23:43:27

    这个没有视频吗
    作者回复

    咱们这个专栏的特点是以图文为主的,有的章节会有部分视频插入

    2022-11-07 16:57:04

  • Greg

    2022-05-04 19:14:33

    打卡,54青年节这天开始学习数据库!
    作者回复

    加油

    2022-11-07 16:39:45

  • 18271870721

    2022-01-21 08:36:07

    有没有整个连锁超市的项目数据资料
    作者回复

    为了客户的数据安全,项目数据资料是不可以提供的,请理解

    2022-03-12 16:09:58

  • C家族铁粉

    2021-03-30 15:24:22

    看了几课,清晰易懂,发觉学起来不累,老师的功力确实深厚~
    作者回复

    谢谢鼓励

    2021-05-17 18:33:02

  • JustDoDT

    2021-03-09 16:06:54

    程序猿必买,当靠谱知识查询使用。
    作者回复

    相信对学员会有所帮助

    2021-03-12 10:10:17