前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎样才算精通 SQL?

怎样才算精通 SQL?

作者头像
LakeShen
发布2024-01-31 15:11:54
1030
发布2024-01-31 15:11:54
举报

前言

最近一直在思考如何帮助他人来学习 SQL,这里作为一名数据库 SQL 优化器的研发同学,我尝试从我个人的经验来分享一些提升对 SQL 的掌握使用的方法。

首先先来说说我个人觉得精通 SQL 有哪几个过程:

  1. 首先,你需要先能够学会使用 SQL ,来满足业务方同学的日常取数需求,先让业务方能够用起来你的数据。
  2. 随着自己写的 SQL 查询增多,开始对于某一类数据库或者大数据引擎(比如 Presto)的 SQL 语法掌握的越来越娴熟,包括 SQL 语法、函数、子查询使用、各种优化参数、以及它的 SQL 语法标准等等。
  3. 自己能够尝试开始解决使用 SQL 遇到的一些性能问题,比如 SQL 查询遇到数据倾斜、使用 Semi Join 等等。
  4. 自己开始能够结合业务领域模型,如果每次查询的数据量和计算非常巨大时,能够对于 SQL 使用的数据进行数仓分层,包括:ODS、DWS、DWD、ADS 层。
  5. 开始对于 SQL 的执行流程有一定了解,包括 SQL 的 AST 语法解析、SQL 验证、SQL 优化器的优化、SQL 转换的物理计划如何执行、事务、存储过程、以及最终数据如何返回。
  6. 开始深入了解一个数据库或者大数据引擎的底层原理,包括:SQL 语法的标准、SQL Analylize 的运作原理、SQL 元数据的存储和读取方式、SQL 优化器的优化规则有哪些、计算引擎模型如何设计和执行的、数据如何存储的、事务的原理等等。

如果你的日常工作主要是使用 SQL 来查询数据,那么我觉得你掌握上面 1 、2 、3 点应该就够了,但是如果你未来计划从事数据库或者大数据引擎的内核研发工作,那么我觉得上面 6点,你可能都需要掌握,毕竟这是你未来要吃饭的东西。

接下来我分享一些如何提升上面六点的一些经验。

1. 学会使用 ChatGPT 来帮你得到答案

你需要学会问 chatgpt,你有任何不懂的问题,都可以尝试先问下 ChatGPT,看下它能不能给你解决问题的答案。

比如你可以让 chatgpt 扮演你具体使用的数据库或者大数据引擎,然后可以问它你各种想知道的 SQL 语法,或者让它帮你写 SQL 也是可以的。比如下面我让 chatgpt扮演一个 postgresql 数据库:

同时你也可以向它询问 SQL 性能问题的相关解决方法,比如解决数据倾斜导致 SQL 查询过久的问题:

总之一句话,有什么数据库或者 SQL 相关的问题,你都可以先尝试咨询 chatgpt。

2. 学会阅读一些好的数据库书籍

A DREAM COMES TRUE

1. 《Head First SQL》

2. 《SQL查询的艺术》

3. 《SQL入门经典》

4. 《数据库系统概念(原书第7版)》

3. 学会从好的开源 Apache 项目学习

这里我推荐你可以学习 Apache Calcite 这个开源项目,Apache Calcite 是一个对于 SQL 解析和管理的框架,主要包括了 SQL 语法解析、SQL 的校验、SQL 的优化(RBO 和 CBO的优化)、SQL 的方言转换等等,它内部现在也有仅百种优化规则,同时它的所有模块都是支持可自定义功能扩展的。

Apache Calcite 整体是 Java 开发的,所以相对于其他语言,比如 C++、C,它能够更好的阅读和理解源代码。我建议你可以将它的代码 clone 下来,然后尝试结合官方文档,以及网上的一些博客,来学习 Apache Calcite。

现在也有很多开源项目使用 Apache Calcite,比如 Apache Flink、Apache Hive、Apache Drill、Apache Kylin 等等,所以需要对于 SQL 的框架有更好的了解,你可以尝试先了解 Apache Calcite 这块开源的 SQL 管理框架原理,在了解其他大数据引擎或者数据库时,其实底层的原理都非常类似。

4. 总结

最后,如果你对于数据库、大数据、AI、理财相关的知识感兴趣的话,欢迎你关注我,如果有任何想要咨询的问题,也欢迎你私信我,我都会一一回答。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LakeShen 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档