大家好,我是Giant。
最近因为工作需要,我每周都要花一部分精力写SQL去Hive表中拉取数据,继而开展后续的分析、清洗与训练。由于平台数据规模庞大(单日增长数百G),业务相关的核心数据往往存放在上百张表中,我一般要关联2-5张表才能把需要的数据一次性取全。关联表格的过程涉及到SQL的join操作。
本文会先用一分钟让你明白 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基础的指南,每周完成一张图里的内容就可以啦。
第一周,学习SQL语句的书写语法和规则。
第二周:基础查询。
利用最基础和最重要的select语句,对表中数据进行查询。
第三周:聚合与排序。
面对大量数据我们时常需要对其做汇总的分析。这部分内容就是说明各类汇总操作的方法。
第四周:数据更新。
理数据库时,我们可能需要的不仅仅是“读”数据,更需要“写”数据,也就是对表进行更新和修改。这一天的内容侧重对表的修改操作,并学习重要的数据库管理方法——事务的创建。
第五周:复杂查询。
这部分的学习内容如果掌握,你将拥有解决实际工作中很多问题的技能。学完需要多复习,并且灵活运用哦!
第六周:复杂查询。函数、谓词、case表达式。
如同所有编程语言一样,SQL也有好用的工具包——函数。利用函数,可以将很多复杂的问题在一行代码内解决完成。
这部分的学习内容如果掌握,你将拥有解决实际工作中很多问题的技能。学完需要多复习,并且灵活运用哦!
第七周:集合运算。
在有多张表的情况下,表和表之间的运算和联系就变得很重要,利用集合运算就可以将不同表中的数据整合起来。
经过开篇介绍的三种join方式,表的联结部分相信你已经很熟悉啦。
以上,就是我和你分享的SQL基础指南,掌握了这些基础语法,能帮助你处理数据时指数级提升效率。