還有不會用 SQL 的程序員嗎?

前段時間,我的領導突然發消息給我:

大 BOSS 想要知道,最近公司上線了促銷功能後

產品的銷量表現如何?有沒有帶來新用戶增長?對同類產品的銷量有沒有促進作用?

剛收到消息時,我的內心是這樣的:

這應該是業務運營團隊提供的好不好?!雖然內心拒絕,但身體還是很誠實。我在確認需求之後,馬上就寫好了相關 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 相當簡單易學。

著名的技術問答網站 Stack Overflow 發佈的 2019 年度開發者調查報告(猜猜他們的結果數據是用什麼語言統計出來的?)

SQL 在設計之初就考慮了非技術人員的使用需求。SQL 語句全是由簡單的英語單詞組成,我們只需要說明自己想要的結果,將具體的實現交給數據庫。可以說,SQL 是一種非常人性化的編程語言。

為了給大家提供一個系統化學習 SQL 和交流心得的平臺,我在 GitChat 推出了技術專欄《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 證書。