这10张图,教你学会SQL!

简介: 这10张图,教你学会SQL!

大家好,我是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基础指南,掌握了这些基础语法,能帮助你处理数据时指数级提升效率。

相关文章
|
监控 文件存储 对象存储
Synology群晖DS916+上启用阿里云同步CloudSync,备份资料就是爽!
有了她,再也不用担心数据没有及时备份了,群晖推出Cloud Sync,群晖+阿里云对象存储,建立完备、廉价的信息备份方案!
29104 1
|
6月前
|
存储 监控 NoSQL
【亲测有用】数据中台元数据管理能力演示
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
9月前
|
弹性计算 运维 Serverless
超值选择:阿里云Elasticsearch Serverless在企业数据检索与分析中的高性能与灵活性
本文介绍了阿里云Elasticsearch Serverless服务的高性价比与高度弹性灵活性。
387 8
|
算法 JavaScript 前端开发
Fitten Code:自动生成代码注释工具
【9月更文挑战第02天】
1464 7
|
JavaScript 测试技术 API
Vue 3 与 TypeScript:最佳实践详解
Vue 3 与 TypeScript:最佳实践详解
|
安全 Java Apache
使用BeanUtils进行属性拷贝
使用BeanUtils进行属性拷贝
|
移动开发 小程序 前端开发
Uniapp Vue3 基础到实战 教学视频
Uniapp Vue3 基础到实战 教学视频
711 1
|
算法 C++
Morton码的计算
Morton码是对栅格格网进行编码的一种算法,在Google中搜索Morton,搜索结果第一位是Wikipedia的Z-order Curve,这是因为Morton码编码结果展现为一种Z形的填充曲线。下面简要说一下如何计算四进制和十进制的Morton码。
1219 0
|
机器学习/深度学习 人工智能 vr&ar
计算机技术的崛起与未来展望
计算机技术的崛起与未来展望
390 0
|
负载均衡 网络协议 算法
云计算中的负载均衡技术,确保资源的平衡分配
云计算中的负载均衡技术,确保资源的平衡分配
1249 0