前言
最近一直在思考如何帮助他人来学习 SQL,这里作为一名数据库 SQL 优化器的研发同学,我尝试从我个人的经验来分享一些提升对 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 管理框架原理,在了解其他大数据引擎或者数据库时,其实底层的原理都非常类似。
最后,如果你对于数据库、大数据、AI、理财相关的知识感兴趣的话,欢迎你关注我,如果有任何想要咨询的问题,也欢迎你私信我,我都会一一回答。