前言
SQL是一名數據分析師的重要工具,但需要將其掌握到何種程度呢?網上的SQL教程動輒就是教科書般的堆砌內容,不管有用沒用,統統來一次完整介紹,完全沒有從一個用戶角度去開發教程。
從實用角度來講,對于軟件的掌握程度也是符合二八原則的,即20%的功能可滿足80%的需求。為了最大化投入產出比,節約大家的寶貴時間,本文結合數據分析實際情況,將SQL知識點分為了必修和選修內容。其中,必修是數據分析師必須會的,而選修則是可能會用得上的,不屬于本文內容的知識點則是幾乎用不上的。
SQL學習大綱
SQL作為一門針對關系型數據庫的結構化查詢語言,其是與數據庫進行交互的底層會話語言。它的功能主要可以分為數據定義、數據操縱、數據控制三類,每一類下面又會包含不同的功能。
但是,作為一名數據分析師,我們的工作職責決定了我們是數據使用者,我們所需學會的功能更多體現在應用層面,那些偏底層的技術基礎,是有專門的數據開發或DBA來處理的。
數據分析師對于SQL的掌握大綱具體如下圖所示。本文只對各知識點做大綱性地介紹,在后續文章將逐一進行詳細介紹。
SQL必修內容
對于SQL已經入門了的同學,這部分內容想必是會了的,差別只是熟練度而已。
(1)數據查詢
數據查詢即為從表中查詢出我們所需要的數據,這里的查詢既包含篩選性查詢,也包含分組聚合性查詢。數據查詢的原理無外乎就是對SQL語言中幾個關鍵字的使用,它的難點在于如何找到實現結果的邏輯方法。
(2)函數應用
SQL中的函數和Excel中的函數原理一樣,是對數據進行處理的方法。我們主要用到的有聚合函數、日期和時間函數、字符串函數、其它函數等。需要注意的是,不同數據庫所支持的函數和函數用法會有區別。
(3)基本優化
數據量小時,SQL優化的必要性顯得不是那么高。但在大數據時代,沒有哪一家公司業務數據庫中的數據會低于百萬級了。因此,掌握基本的SQL優化還是很有必要的。
基本優化主要是改善SQL語句執行效率低的問題,譬如調整SQL語句、建立索引等,復雜的優化交給專門的DBA就行了。
SQL選修內容
選修中的內容在很多公司都是由專門的DBA或數據開發人員來完成,數據分析師一般都不具備相應的權限。但也還是有一些公司對于這一塊的崗位職責分工的不是這么細,數據分析師往往也承擔著部分數據開發的職責。下面是一些常見的選修內容。
(1)增、刪、改
它包含表和數據的增、刪、改。例如,在建設數據倉庫時,ODS層的數據寫入DW層時,就需要新建相應的表;而且還得按照固定頻率去更新DW層表中的數據。
(2)索引
索引是數據庫用來提高性能的常用工具,它是通過對表中一列或多列的值進行排序,使得查詢可以變得更快。索引的本質就是書的目錄。
(3)視圖
視圖是一種虛擬的表,它并不在數據庫中存在,它本質就是存儲在數據庫中的SQL語句。
對于使用者來說,他完全不用關心視圖是怎么來的,將其作為正常的表對待,只需讓DBA保證視圖數據的準確性和及時性就夠了。
(4)變量
變量分為局部變量和全局變量,它一般用作參數去給字段賦值,即將變量的值反過來賦值給字段。它的應用范圍也比較廣,特別是在存儲過程中。其作用也比較明顯,在查詢優化和便捷性方面都是一個不錯的選擇。
(5)存儲過程與函數
存儲過程和函數時事先經過編譯并存儲在數據庫中的一段SQL語句集合,調用存儲過程和函數可以簡化開發人員的很多工作,減少數據在數據庫和服務器之間的傳輸,提高數據處理的效率。但也正如其名,它主要是用在數據的存儲方面,即數據的增、刪、改上面。
(6)觸發器
觸發器是與表有關的數據庫對象,可以理解為當條件滿足時,就執行觸發器中定義的語句集合。實際中有很多平臺其實已經將這些功能開發成軟件了。
結語
剔除文中的必修和選修內容,SQL的功能點自然是還有很多的。但對于一個數據分析師來說,那些功能真的有用嗎?至少在我接觸的好幾家公司里,用到的全都是必修內容,選修中內容幾乎用不上,就更別提本文沒提到的功能了。
因此,每個人都需結合自身實際情況來梳理自身的知識體系,厘清哪些是必修課程哪些是選修課程,而哪些是沒有必要去學的!我們的時間都很寶貴,希望都能用在正確的事上!