还有不会用 SQL 的程序员吗?

前段时间,我的领导突然发消息给我:

BOSS 想要知道,最近公司上线了促销功能后

产品的销量表现如何?有没有带来新用户增长?对同类产品的销量有没有促进作用?

刚收到消息时,我的内心是这样的:

还有不会用 SQL 的程序员吗?

这应该是业务运营团队提供的好不好?!虽然内心拒绝,但身体还是很诚实。我在确认需求之后,马上就写好了相关 SQL 查询,并且很快拿到了线上运行结果,生成 EXCEL 报表发给了领导。

之后我得知,由于新产品的图形报表分析功能还没有上线,所以不会用 SQL 语句拿数据的业务分析人员就吃了苦头。在运营团队被 BOSS 一通批评之后,这个任务就转到了我们开发部门。最后,BOSS 要求他们学会自己从数据库获取数据进行分析,而我们可以提供支持。

事情虽然已经过去,但是我对此却有一些思考。我们是一家技术公司,岗位包括设计、开发、测试以及产品和运营,但主要由技术人员组成。虽然不是所有人都需要整天写代码,但处理和分析数据是不同岗位都需要的基本技能,因此我们都可以算作广义上的程序员。

我们都知道,数据库是目前企业存储数据的主要方式。当前主流的数据库包括 Oracle、MySQL、SQL Server 等。

尽管各种数据库有所不同,但是访问和操作数据库的 SQL 却是大家通用的语言。于是乎,以下工作岗位都不可避免需要用到 SQL 语句的数据处理功能:

  • 数据分析师:显然这是一群依靠分析数据为生的人,与数据库打交道是必不可少的,SQL 是他们必备技能之一。

  • 数据科学家:与数据分析师一样,数据科学家的日常工作也离不开数据的处理,不可避免需要使用 SQL。

  • 数据库开发工程师:这个职位的主要任务就是写 SQL 代码,实现业务逻辑。

  • 数据库管理员:也就是 DBA,主要职责是管理和维护数据库,除了会写 SQL,还需要负责审核开发人员编写的 SQL 代码。

  • 后端工程师:后端开发必然需要涉及数据的处理,需要通过 SQL 与数据库进行交互。

  • 全栈工程师:既然是全栈,自然包括后端数据的处理。

  • 移动开发工程师:作为一名移动开发工程师,一定对 SQLite 数据库不会陌生,它是在移动设备中普遍存在的嵌入式数据库。

  • 产品经理:产品经理需要了解产品的情况,而数据是最好的说明方式,了解 SQL 非常有利于对产品的把握。

在 Stack Overflow 发布的 2019 年最受欢迎的编程语言中,SQL 排在了第 3 名超过一半的开发者在工作中需要使用 SQL,这就是 SQL 语句的普遍适用性

普遍适用性的好处就是,当你想要调换岗位或者工作时,会用 SQL 将成为你的资本;反过来说,如果不会 SQL,你将可能处在被动的位置上。不过不用担心,因为 SQL 相当简单易学。

还有不会用 SQL 的程序员吗?

著名的技术问答网站 Stack Overflow 发布的 2019 年度开发者调查报告(猜猜他们的结果数据是用什么语言统计出来的?)

SQL 在设计之初就考虑了非技术人员的使用需求。SQL 语句全是由简单的英语单词组成,我们只需要说明自己想要的结果,将具体的实现交给数据库。可以说,SQL 是一种非常人性化的编程语言。

为了给大家提供一个系统化学习 SQL 和交流心得的平台,我在 GitChat 推出了技术专栏《SQL 从入门到精通》。

扫码了解《SQL 从入门到精通》专栏详情

还有不会用 SQL 的程序员吗?

希望大家通过本专栏的学习,能够掌握各种 SQL 技能以及背后的设计思想,在工作中成长为一道重要的主菜而不是可有可无的咸菜。

专栏内容

本专栏主要讨论 SQL 编程技术和思想,分为四个部分:基础篇、进阶篇、开发篇以及扩展篇。

还有不会用 SQL 的程序员吗?

第一部分:基础篇。首先介绍数据库领域的最新发展,回顾数据库和 SQL 的核心概念;然后讨论如何使用 SELECT 语句查询数据,过滤数据、对结果进行排序、实现排行榜与分页效果;同时还会介绍常见的 SQL 函数、CASE 表达式以及数据的分组汇总;最后是一个分析世界银行全球 GDP 数据的实战案例。

第二部分:进阶篇。主要包括 SQL 数据分析的一些高级功能:空值的问题、多表连接查询、子查询、集合运算、通用表表达式与递归查询、高级分组与多维度交叉分析、窗口函数与高级报表以及基于行模式识别的数据流分析等。

第三部分:开发篇。讲述数据库设计与开发过程中涉及到的一些实用知识。包括如何设计规范化的数据库、如何管理数据库对象、如何对数据进行增删改、数据库事务的概念、索引的原理;同时还会介绍视图的概念、如何使用存储过程实现业务逻辑以及如何利用触发器实现用户操作的审计。

第四部分:扩展篇。我们将分析 SQL 语句的执行计划与查询语句的优化、使用 SQL 处理 JSON 数据、在 Python 和 Java 中执行 SQL 语句,并介绍动态语句和 SQL 注入攻击的预防。在专栏的最后,我们将探讨一下 SQL 编程中的道与术。

如果是初学者,建议按照顺序阅读;如果你已经具有一定的 SQL 基础,也可以针对感兴趣的部分单独学习。

专栏亮点

  • 零基础学习:通过简单易懂的示意图和案例分析,透彻讲解每个 SQL 知识点;

  • 内容全面覆盖:从基础查询到高级分析,从数据库设计到查询优化,全面介绍 SQL 必备技巧;

  • 基于最新标准:紧跟产业发展的最新趋势,解锁最前沿的 SQL 技能;

  • 4 种主流数据库的语法实现:提供并解读 Oracle、MySQL、SQL Server 以及 PostgreSQL 实现代码。

希望通过本专栏的学习,大家能够掌握各种 SQL 技能以及背后的设计思想,在工作中成为一道重要的主菜,而不是可有可无的咸菜。

最后送给大家一句话:有的人 25 岁就已经失业了,只是 35 岁才被辞退!

数据架构师,毕业于北京航空航天大学,拥有十余年数据库管理与开发经验。目前在一家全球性的博彩企业负责数据库架构设计和开发工作。

擅长各种数据库管理与 SQL 开发,包括 Oracle、MySQL、PostgreSQL 等,拥有 Oracle OCP 证书和 Redhat RHCE 证书。


分享到:


相關文章: