我第一次學習 SQL 的時後,是在 Coursera SQL for Data Science 上學這門專門針對資料科學設計的 SQL 課程,這一門課加上所有的作業練習,我大概花了 2 周,接著就錄取了下一份工作 – 數據分析師。
在使用公司的數據庫時,花了大約 1 天左右完成所有考試,包括了解公司的資料庫結構、了解資料表存取了哪些資料,也總算是弄懂了基本的 SQL 語法,這其間也多虧有左右的同事幫忙。
大概在錄取後 1 個月,我就算是能夠自在的使用 SQL 語言,也在接下來工作的這 1 年,大量使用 SQL 語言,完成比較複雜的 SQL 處理:像是 json 的處理、Cohort 分析所需要的資料錯位處理等等。總之,SQL 的學習,我覺得比起其它更複雜的程式語言,不算太難,一般非理科的學生們應該也可以快速學會,只要了解 SQL 和資料庫的邏輯,並且掌握以下關鍵的 7 個重點,就能比較輕鬆的學會!
什麼是 SQL?他是用來做什麼的?
- SQL 是一種程式設計語言
- 資料庫用 SQL 這個語言來叫出想知道的訊息
- SQL (一種語言) 用來查詢資料庫 (database) 裡的資料表 (table),也可以存取、刪除資料
- SQL 有幾個分支:MySQL、SQLlite….,不過大體來說,語法大致上相同,只要學習一種之後,其它分支的語法在網路上也很容易查到
關於 SQL,我們要知道:學習 SQL 的目的,是因為資料庫很大 (database),資料表 (table) 很多,我要怎麼叫出我想要的欄位,或是我想要的特定資料?那就是用 SQL 跟他溝通!
掌握資料庫的結構為什麼很重要?
- 資料庫 (database) 像一個大倉庫,資料表 (table) 是倉庫裡的箱子,箱子裡面有成列排好的資料 (value),要先在腦海裡有這個結構,之後比較複雜的資料表 (table) 跟 資料表 (table) 之間的關係,或是資料庫 (database) 跟資料庫 (database) 之間的關係,才能夠加以理解
- 接著,了解這個資料庫裡面儲存什麼資料?
- 接著,了解資料表有幾張?裡面有哪些 key 是可以相互連接的?
- 例如:A 表儲存客戶資料 (欄位包含:客戶編號、客戶基本資料),B 表儲存訂單資料 (欄位包含:訂單編號、客戶編號),客戶編號就是其中可以連接彼此的 key,我可以透過客戶編號這個 key 把 A 表和 B 表的資料連在一起
- 最後,補充一下,資料表的結構,目前關聯式資料庫最為常見,又分為非結構化和結構化
- 結構化:
- 非結構化:
- 我覺得這一點先放在心裡就好,一開始在使用的時候,如果你不是專門在設計資料庫的 Data Enginner 或是 Business Intelligence Analyst,就只要了解:資料庫裡面儲存什麼資料?了解資料表有幾張?裡面有哪些 key 是可以相互連接的?
資料庫裡面儲存什麼資料?
了解資料表有幾張?裡面有哪些 key 是可以相互連接的?
這是初學者在應用前要知道的重點
為什麼要知道儲存在資料庫裡的資料,在業務上代表的意義?
- 資料庫裡儲存的資料,通常都是在記錄一個實際產生的行為或是斷點
- 例如:A 客戶,0:00 下單一個漢堡,0:01 餐廳接單開始製作,0:10 司機到了餐廳準備取餐,0:15 開始外送,0:20 送到 A 客戶手中。資料庫會紀錄這每一個實際產生的行為 (下單、到店、開始外送、送達),也會紀錄每個斷點 (0:00、0:01……)
- 先了解業務上,為什麼要紀錄這些行為或是斷點,再來看資料庫如何儲存這些資料
- 接著,再思考一次,業務上,為什麼要紀錄這些行為或是斷點?
- 因為我想知道,平均外送時間是多久?好讓我們可以反映給營運團隊
- 接著,你就可以開始思考你需要什麼數字?如何設計報表?
學習基本的語法
一開始會用到的語法不多,常見的先學會,練熟就好!
- Select:選取資料
- From:從哪個表
- Where:條件有哪些?例如:時間區間
- Join:用來連結兩張表,也就是剛剛提到的,了解資料表有幾張?裡面有哪些 key 是可以相互連接的?key 可以用 Join 來連接
操作實際案例:教你自學也能應用的重要方法
實際操作,我會推薦 2 個實用的方法!
- 可以到網站上練習:
- 但我會建議,最好以自身相關的資料庫出發,自己實際匯入資料庫後練習,可以看看這篇:Google BigQuery 教學,3 分鐘完成資料匯入跟 SQL 查詢
- 我沒有資料要怎麼匯入?可以用自己的財務資料 (例如說:記帳表)
- 匯入到哪裡?用 Google BigQuey 免費版,製作自己的資料庫
- 如何練習 SQL?用 Google BigQuey 免費版,以 SQL 語言和自己建立的資料庫溝通,也可以用 Google BigQuey 裡的開源數據庫
學習進階寫法
學習進階語法的目的有幾個,但如果應用場景不複雜,其實可以不用急著寫進階寫法,能夠以基本語法實做,才是初學者應該要全力專注的:
- 增加效能:基本的寫法,有時候會讓資料庫跑的慢,特別是在資料庫大的時候
- 提升分析能力時,語法也需要進步:例如 json 語法的處理、Cohort 分析所需要的資料錯位處理等等
參考跟欣賞其他人的語法
- 參考前輩:可以參考公司的同事,可以借人家寫好的語法看看
- 像是日期的處理,我一開始也是看到同事寫的範例才會用
- 參考書籍或是線上課程
- 參考論壇:網站上的討論
結論:實作及練習才是學習 SQL 的核心
如果再次統整一下學習 SQL 最重要的幾件事,或是希望知道如何學好 SQL,如何排序學習的優先順序,我會建議:
- 了解什麼是 SQL?他是用來做什麼的?–> 為什麼一定要用他
- 掌握資料庫的結構 –> 懂結構,才知道怎麼串聯資料表
- 為什麼要知道儲存在資料庫裡的資料,在業務上代表的意義? –> 懂業務上的意義,才懂資料的意義
- 學習基本的語法 –> 初學的時候,厲害的語法並不是重點
- 操作實際案例 –> 2 種實際操作的方法,都是免費的
- 學習進階寫法 –> 並非初期最重要的事情
- 參考跟欣賞其他人的語法 –> 非必要,但是可以透過其它人的寫法,快速掌握實用的技巧
希望大家的 SQL 學習之路,都可以順順利利!
學習資源推薦
網路上的 SQL 學習資源很多,這裡會推薦我有使用過的 SQL 學習資源:
- Coursera:SQL for Data Science:英文課程,當初上完這門課之後,足夠應付 SQL 公司的上機考
- SQL 的五十道練習:初學者友善的資料庫入門:中文課程,老師在台大進修部教很多年 (都是數據分析相關的課程),我的 R 也是跟老師學的,這次推出搭配很多練習題的 SQL 線上課程
- Google Data Analytics Professional Certificate:Google 認證的資料分析師證照課程有幫助嗎? 誰最適合上?可以參考我的學習心得,證照班適合想要全方位學習數據分析工具跟技巧的人!
Pingback: [數據分析#0] 數據分析文章導覽 - Lisa Wu 財富自由之路