如何写一手好SQL

廖雪峰 2021-10-14 18:07

如果真的要说程序员普遍常用的语言,那应该就是 SQL 了。


作为一门和数据库打交道的语言,无论是前端、后端,还是运维、web 开发,多少都需要写一些 SQL,尤其是随着互联网业务数据量的暴增,现在业务人员(比如产品经理、运营、财务人员),也需要懂得 SQL,数据分析已经是每一个岗位都必备的技能。


除了工作中常用,我主张学习 SQL 的另外一个原因:它是一门半衰期很长的语言,诞生至今 40 多年,SQL92 和 SQL99 这两个标准一直沿用到现在,这意味着掌握 SQL 是一件一劳永逸的事情,至少在你的职业生涯中,它都可以发挥作用。所以说,SQL 也就成了性价比最高的语言。


SQL 入门并不难,程序员基本上谁都会用 SELECT 写两句。但是在实际工作中,还远远不够,总是会遇到各种问题,比如:


  • 学过很简单的 SQL,面对基本的需求没有问题,但当面对稍微复杂一点的数据需求,总会力不从心,找不到窍门;

  • 由于上手容易,在学习初期不拘小节,忽略了语句编写带来的性能问题。在后期导致 SQL 的使用效率很低,成为了工作中的“绊脚石”;


当然还有很多具体而普遍的问题,比如为什么我的 count(*) 如此慢?为什么建立索引,查询还是很慢?我该从哪些方面去调优?


我认识一个大佬,叫陈旸,清华大学计算机系博士,前 IBM 中国研究院工程师。他精通数据分析,之前曾经使用 SQL 编写过一个能够「自动抓取、发布、互动的微博机器人」,通过数据分析,来制定优质的内容抓取、广告屏蔽和用户增长趋势分析策略。这个机器人同时管理了 2000+ 微博账号,累计积累超过 500 万 + 粉丝。


陈旸在极客时间写了一个专栏《SQL 必知必会》,有个我不得不推荐的理由 -- 陈旸特别整理了一份“王者荣耀数据库”以及“ NBA 球员数据库”,来进行 SQL 的实操训练。


都知道,学 SQL 得实操,但现实是没有那么大量的数据供你操作,这个专栏完美解决了这个问题。


完整读下来,基本是从小白到进阶,一整条路径都梳理清楚了:先巩固扎实的 SQL 语法;再以工作中的实际问题为例,带你编写高性能的 SQL 语句;最终学会在项目中使用 SQL。


专栏还总结了一张「 SQL 知识全景图」,内容涉及日常工作所需掌握的 SQL 知识的方方面面,建议收藏。



这个专栏已经 1.7 万人学了,现在正在做限时特惠活动,原价 ¥199,限时拼团 + 口令「SQL202105」到手仅 ¥119!建议有需要的同学都先囤一份起来再说。


即将恢复原价至 ¥199

拼团+口令「SQL202105」立省  ¥80!


这个专栏凭什么值得买?


除了我一直比较推崇的「内容体系化」,最重要的是专栏有几个特色。


1、用 “王者荣耀+ NBA 球员数据库 ” 进行项目实操


在学习使用 SQL 的时候,总是需要一些数据,但目前主流的 SQL 书本或者网络上用的基本是千篇一律的数据表(比如查询超市数据表),为此陈旸特地建了一个“王者荣耀数据库”以及“ NBA 球员数据库”,以便基于此进行 SQL 的实操训练,在实操中讲解,并输出实战,比如如何用 SQL 做数据清洗、数据集成等。


就游戏而言,数据查询就涉及很多知识点,包括多表联查、分区分库、用户权限、排行榜、大规模并发和用户数据安全等等。



2、实战 SQL 性能优化


之前总有同学问:“同样都是用 SQL 查询数据,为什么我写的语句要比别人的慢?” 在 讲完 SQL 本身的语法后,陈旸会告诉你如何快速定位 SQL 性能问题,提高查询效率。


举个例子,之前有个同事,写了个两张表关联的查询语句,但是他在写 SELECT 语句的时候,发现优化器评估返回的数据量为 1000 多 T,总成本 2000 多 G,返回时间需要 300 多小时。实际上优化处理后,可能只需要 0.1 秒。不重视 SQL 语句的质量和优化,可能会带来高达几万倍的差别!


3、玩转 6 大常用数据库


在实际工作中,大家经常会接触到不同的关系型数据库管理系统,在专栏里,陈旸将通过 6 大常用数据 Oracle、MySQL、SQL Server、Access、WebSQL、SQLite,来讲解 SQL 在不同的数据库管理系统中是如何使用的。



比起自己盲目地自学三年,真的不如跟着对的人学三个月。趁现在还有优惠,一顿呷哺呷哺的钱,拿下这个宝藏专栏。


扫码免费试读👆


👇点击「阅读原文」,拿下涨薪硬通货!

推荐阅读