查看原文
其他

这 10 张图,教你学会 SQL!

The following article is from Giant Xu Author Giant

大家好,我是鱼皮。如今,SQL(结构化查询语言)的应用已经十分广泛,无论是后端开发、大数据开发、数据分析、产品还是算法岗位的同学或多或少都要和 SQL 打交道。
我自己目前的主要工作是研发 BI 平台,每天都要和 SQL 打交道,也帮用户写过、排查过很多次 SQL 问题,也写过嵌套 SQL 生成器;再加上最近开始接手了一些大数据开发的工作(比如 Spark SQL),不禁再次感叹到 SQL 的重要性。
所以今天给大家分享一篇有关 SQL 的教程文章(作者 Giant Xu),希望对大家有帮助~
由于在 SQL 分析场景中,关联表格的需求非常常见,所以本文会先用一分钟让你明白连表查询中 left join、right join和join的区别,随后用7张图帮你系统地学习 SQL。
先放一张汇总图,让你有个印象。下面结合实例各个击破。
第一步,我们先来创建两张表,第一张表的名字为subject,第二张表的名字为score。

一、left join

left是左边的意思,join是连接的意思,连起来就是“左连接”,表1左连接表2。以左为主,表示以表1为主,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。如下:
select
   *
from
   subject
left join score 
on subject.id = score.id

结果集:


写SQL最好能有适当的换行和缩进,这样阅读效率会大幅提升。
二、right join

right是右边的意思,join是连接的意思,加起来就是“右连接”,表1右连接表2。以右为主,表示以表2为主,查出表2所有数据以及表1和表2有交集的数据:

select
   *
from
   subject
right join score 
on subject.id = score.id

结果集:

三、join

join 是 “inner join”的简写,表示内连接,查询结果是两个表有交集的部分,其余忽略。这个用的情况也是挺多的,如下:

select
   *
from
   subject
join score 
on subject.id = score.id


结果集:

四、7 周快速掌握SQL基础指南

SQL在处理大量数据时有Excel无法比拟的优势。根据二八定律,其实只需掌握20%SQL的基础内容,就足以胜任80%的常见工作啦。

因此,作者额外总结出了一份 7 周快速掌握SQL基础的指南,每周完成一张图里的内容就可以啦。(鱼皮补充:这里的 7 周只是一个模糊的估值,具体 SQL 要学到什么程度、要学多久,以自己的实际需求为主,如果只是想快速学会 SQL 基础语法,其实每种语法写一遍就差不多了)

第一周,学习SQL语句的书写语法和规则。



第二周:基础查询。

利用最基础和最重要的select语句,对表中数据进行查询。

第三周:聚合与排序。

面对大量数据我们时常需要对其做汇总的分析。这部分内容就是说明各类汇总操作的方法。

第四周:数据更新。

理数据库时,我们可能需要的不仅仅是“读”数据,更需要“写”数据,也就是对表进行更新和修改。这一天的内容侧重对表的修改操作,并学习重要的数据库管理方法——事务的创建。

第五周:复杂查询。

这部分的学习内容如果掌握,你将拥有解决实际工作中很多问题的技能。学完需要多复习,并且灵活运用哦!

第六周:复杂查询。函数、谓词、case表达式

如同所有编程语言一样,SQL也有好用的工具包——函数。利用函数,可以将很多复杂的问题在一行代码内解决完成。


这部分的学习内容如果掌握,你将拥有解决实际工作中很多问题的技能。学完需要多复习,并且灵活运用哦!

第七周:集合运算。

在有多张表的情况下,表和表之间的运算和联系就变得很重要,利用集合运算就可以将不同表中的数据整合起来。

经过开篇介绍的三种join方式,表的联结部分相信你已经很熟悉啦。

以上,就是本期分享的 SQL 基础指南,掌握了这些基础语法,能帮助你处理数据时指数级提升效率。



今晚会在星球里直播分享一些个人积累的写简历技巧以及项目优化点,大家感兴趣的话,欢迎加入
鱼皮的编程知识星球(点击了解详情),和 8000 名小伙伴们一起交流学习,向鱼皮和大厂同学 1 对 1 提问、帮你制定学习计划不迷茫、跟着鱼皮直播做项目(往期项目可无限回看)。

往期推荐

输入 SQL 到返回数据,到底发生了什么?

Gitee 很无奈!

我造了个轮子,完整开源!

给 32 位系统装 8g 内存条,会怎样?

编程导航,火了!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存