一名数据分析师的SQL学习历程

共 2988字,需浏览 6分钟

 ·

2020-09-23 13:37


导读

一直认为,扎实的SQL功底是一名数据分析师的安身立命之本,甚至可以称得上是所有数据从业者的基本功。当然,这里的SQL绝不单单是写几条查询语句那么简单,还包括数据库本身的DDL、DCL、查询调优和锁机制等等也都是要很熟练的;甚至再进一步外延,数据仓库也可作为进阶要求。

随着近期SQL用的越来越少,感觉有必要总结下一年来自己在SQL方面的学习历程,以资借鉴。



个人SQL学习之路是以最为广泛使用的数据库之一——MySQL为对象展开学习的,下面主要从书籍、视频、刷题和文档4个部分展开介绍,这4个部分本身并无先后之分,甚至是会有经常性交叉和重复,唯有多源资料相互促进、不断深化,方可温故知新。



01 书籍篇

实际上,在这个信息爆炸的时代,传统意义上的教材在学习一门新知识过程中的所占比重正变得越来越弱,相较于文字的生涩和古板,很多初学者可能更习惯于看一套视频教程来得真切。但即便如此,有些经典书籍仍然是值得提倡和翻阅的。这里介绍两本MySQL经典书籍,《MySQL必知必会》、《高性能MySQL》,前者适合建立学习SQL之初的总体框架,后者适合具备一定SQL基础之后的提高。


MySQL入门经典


MySQL进阶必备


两本书都堪称是经典,其中前者是图灵必知必会系列丛书之一,还有很相近的SQL必知必会;后者是REILLY动物书系列之一,从其封面图中的那只鹰就可以感受到本书对MySQL性能要求的犀利程度。作为教材中的经典,两本书的缺点也很是显而易见:那就是较为古老,时效性差。例如,MySQL必知必会是出版于2009年,那时的MySQL版本大概是5.1,刚好是SUN公司收购MySQL之后不久;而高性能MySQL经典版本是2013年的第三版,这也是市面最为流行的版本,个人所学也是这一版,对应MySQL5.5,还是相对较新的。所以,在学习两本书的过程中也要注意甄别版本之间的区别。注:当前MySQL最新版本是8.0。


两本书的定位:必知必会适合通读,侧重迅速建立数据库知识框架;高性能MySQL适合专题学习,用于进阶深入不断精进技术。



02 视频篇

在学完MySQL必知必会建立基本知识框架之后,就可以找一门视频教程专项学习了。实际上,在学习一门新知识之初看视频可能是更为高效的方式,但在入门之后再看视频则不再合适,而应追求高质量的专题研讨甚至学术论文。


学习视频教程有众多渠道,但个人首先推荐B站,不得不感谢这个曾经是二次元为主的视频站点,如今竟然成了一个优秀的学习平台。上面有大量的开源盗版视频教程,有的是培训机构的录制视频,也有一些技术大佬录制的教程。难说哪个视频最好,个人推荐某谷的一套完整教程《MySql基础+高级全套视频教程(共241集)》,视频非常齐全,共241集累计37个多小时,但个人感觉是讲解较为通俗和全面的。很多知识点当时可能不甚理解,但在后续复习中往往会有新的理解和认知,一套教程下来基本上涵盖了MySQL入门和进阶,非常值得二刷、三刷。


B站某MySQL教程



03 刷题篇

纸上得来终觉浅,绝知此事要躬行。当看书和刷视频到一定程度之后,就应该用刷题来检验所学深浅了。实际上,刷题虽然被很多人所不耻,但却不得不承认这是最能短时间快速学习和掌握新知识的方式。个人在MySQL中也找了很多渠道,比较值得推荐的是以下4个:


  • 互联网广泛流传的MySQL经典50题。实际上,也不知最初源于何处或者出自何方高人,但这50题确实是经常可见,实际拿来练手也会确有收获。由于50题没有平台收录,所以需要自己在本机搭建好MySQL环境,并将样例数据建表写库,而后即可在本机畅快的刷题了。经典50题的定位整体还是入门级,部分题目会有些拔高,好在网上各种答案比较丰富,真正完整刷一遍相信已经会是入门级水平了


  • SQLzoo:这是一个支持多语言的SQL练习平台,定位也是偏入门级,会系统按照MySQL的各大关键语法进行分章练习(例如比照MySQL必知必会中的章节划分),题目循序渐进,有的题目还会给出基本的SQL语句样例,回答正确后会提示笑脸,回答错误时会给出简单的错误描述,例如返回记录过多等,必要时还可提前查看下正确答案应有的样子,还是比较贴心的


SQLzoo简单的错误提示


  • 牛客网:一共60+题,主要是查询题目,也有少数题目考察其他语法。实话说,在推荐这个SQL刷题平台时,我是比较纠结的,推荐是因为这上面的很多题目还是比较具有代表性和深度,很能启发思维;纠结之处则在于一方面SQL是以SQLite语法作为蓝本,跟MySQL还是有些许区别,另一方面则在于牛客网上面的少数题目理解起来很有歧义,往往是看了他人题解之后才意识到题目是这个意思,而非通常理解的那样。另外,还有个别题目是有字符错误的,orz~


  • LeetCode:之所以把力扣放在最后是有原因的。作为一个程序员刷题网站,力扣在数据库题目方面也是比较丰富的,区分简单-中等和困难3个难度,题目在严谨性和代表性方面也确实比前2个平台都有很大提升。但最大的问题是leetcode中免费可刷的数据库题目太少,在100+题目中,仅有20题左右是免费开放的,所以光靠这20题很难带来SQL能力的实质提升。所以个人当时是刷了几个月的数据结构与算法题、参加每日一题、周赛等活动攒够了积分,换了个7天会员(学知识是不能叫白嫖的),然后突击性的刷了两遍。刷完下来,就感觉SQL能力有了很大提升,至少在面对多重嵌套、临时变量、窗口函数等知识点时不至于束手无策。具体可参考以下几篇文章:

  1. MySQL查询连续打卡信息?

  2. 一文解决所有MySQL分类排名问题

  3. 一句SQL,我有6种写法

  4. 分享几道LeetCode中的MySQL题目解法


刷题之余,自己也不忘把自认比较好的题解分享出来,有的题解还是很受欢迎的。


个人的一道长期TOP1题解



04 文档篇

在互联网这个新知识日新月异的领域,必须经常性的学习跟踪技术前沿才不至于落伍。所以,在MySQL学习路上,最后值得推荐的其实是MySQL官网和官方文档。一部官网记录了MySQL的方方面面,一份官方文档则涵盖了MySQL的所有知识要点。当然,几千页的文档是不可能短期看完的,所以个人也只是针对其中的重点章节仔细研读,例如个人在学习MySQL中的4种隔离级别和不同锁机制时,学习的主要资料就是阅读官方文档。这里不得不感慨老外写的东西还是比较严谨的,虽然是英文文档但理解起来毫无歧义。更重要的是,官方文档实际上才是最为权威的学习资料,而不像网络教程的各种鱼龙混杂:在掺杂了个人理解和三人成虎之后,很多知识点其实是会存在误解的。



实际上,这些仍然仅能称得上是学习SQL路上的冰山一角和万里长征第一步,因为学习的过程本身就是只有进行时而没有完成时。


以上,与各位读者共勉。



相关阅读:


浏览 53
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报