歷久彌新的結構化查詢語言
在與關聯式資料庫互動密不可分的資料科學與軟體開發領域,結構化查詢語言對於有志從事相關工作的學習者是重要且難以取代的,也因而體現出歷久彌新的現象。
對文章有興趣來不及看?點選右上角「
橘色小書籤」收藏文章,再也不怕錯過就是一輩子!
結構化查詢語言的歷久
結構化查詢語言(Structured Query Language, SQL)是在 1970 年代由 IBM 發明,在當時是作為與 IBM 的準關聯式資料庫管理系統 System R 進行互動的語言,就如同現代的 SQL 與資料庫管理系統的關係一般;到了 1980 年代,由於 IBM 與 Oracle(當時叫做 Relational Software)兩間大型軟體公司在開發以及銷售 SQL 與關聯式資料庫管理系統的活躍,美國國家標準協會(American National Standards Institute, ANSI)以及國際標準化組織(International Organization for Standardization, ISO)開始制定所謂「標準 SQL」,第一次制定的標準 SQL 誕生於 1989 年,而最近的一次更新制定則恰是今年 2023。
結構化查詢語言的彌新
如此年邁接近 50 歲的結構化查詢語言,在現今究竟是廉頗老矣、老驥伏櫪抑或者是老來俏、倒吃甘蔗呢?答案自然是後者,否則我不會三番兩次地撰文介紹他、更不會為他設計兩堂線上課程:初階課「SQL 的五十道練習」以及新課「進階 SQL 的五十道練習」。
結構化查詢語言的老來俏在 Kaggle ML & DS Survey、Stack Overflow Developer Survey、IEEE Top Programming Language 以及 Tiobe Index 這四份調查與指數中一覽無遺。
-
Kaggle ML & DS Survey 2022:SQL 在資料科學從業人員日常工作所使用語言排名第二。
-
Stack Overflow Developer Survey 2023:SQL 在最受軟體工程師歡迎的語言排名第四。
-
IEEE Top Programming Languages 2023:SQL 在綜合面向(Spectrum)排名第七;在求職面向(Jobs)排名第一。
-
TIOBE Index for September 2023:SQL 排名第十。
圖片來源:https://www.kaggle.com/competitions/kaggle-survey-2022
圖片來源:https://survey.stackoverflow.co/2023/#technology-most-popular-technologies
圖片來源:https://spectrum.ieee.org/the-top-programming-languages-2023
圖片來源:https://www.tiobe.com/tiobe-index
為什麼結構化查詢語言不論是在以資料科學和科學計算為主體的 Kaggle 與 IEEE,或者在以軟體開發為主體的 Stack Overflow 與 Tiobe Index 都名列前茅呢?理由也相當直觀,結構化查詢語言是與關聯式資料庫互動的原生語言,在資料科學和科學計算領域中,常見的資料來源之一為關聯式資料庫,是專案的起手式,必須仰賴結構化查詢語言作為檢索資料的媒介,大多數只需仰賴語言中的查詢功能。在軟體工程領域中,關聯式資料庫扮演系統與應用程式的後端,需要仰賴語言全面性的功能,包含資料定義、資料操作、資料控制甚至交易控制。一言以蔽之,有關聯式資料庫的地方,就有結構化查詢語言,因此在軟體工程與資料科學作為資訊科技最大宗的專業領域中,結構化查詢語言仍能持續譜出「彌新」樂章。
進階 SQL 的五十道練習課程設計
從結構化查詢語言的歷久彌新,我們知道了想要從事資料科學或軟體開發的相關工作必須要懂得資料庫與結構化查詢語言,如果從事資料科學的分析相關工作,例如:資料科學家、資料分析師或者商業分析師,那麼具備成熟的查詢技能即可掌握自如;如果從事資料科學的工程相關工作、軟體開發相關工作,例如:資料工程師或後端工程師,那麼就會要求全面掌握結構化查詢語言的功能,對於資料定義、資料操作、資料控制與交易控制嫻熟且有經驗。
在課程設計中,我們延續了廣受學員好評的 Exercise Based Learning 架構,在每個知識點運用 LPAA 循環:Learn、Practice、Apply、Assess,首先透過課程影片聽老師觀念講解,接著在學習環境跟著影片中的範例實作、再來是自己寫作練習題,最後若測資一直無法順利通過就可以看練習題詳解影片,如此才能確保學員的學習效果。
初階課花費了九成的篇幅與時間學習基礎的觀念、查詢敘述以及技巧,對於其他的功能未做仔細地討論,因此新課設計獨立的四個章節分別講述資料定義語言、資料操作語言、資料控制語言以及交易控制語言,這是第一點進階之處。由於課程包含了資料控制語言,這是針對多人使用的情境下,以結構化查詢語言進行資料與使用者權限設定的功能,因此初階課所使用的輕量化、供單人使用的關聯式資料庫管系統 SQLite 就不適用,根據 DB-Engine 網站的排名,MySQL 排名第二,更是免費使用、開源授權的排名第一,於是新課改採 MySQL 關聯式資料庫管理系統,這是第二點進階之處。
圖片來源:https://db-engines.com/en/ranking
初階課所使用的學習資料庫都是以 .db 的檔案格式提供給學員使用,對於資料庫結構和資料表設計的概念未做深入討論,而新課除了在資料操作語言上講述主鍵、外鍵的約束觀念,更獨立一個章節探討資料對應關係、正規化以及實體關係圖,讓學員對於資料庫的建置不再霧裡看花,這是第三點進階之處。
圖片來源:https://hahow.in/courses/645734e4ce9d5fb4442d91cd/main
初階課我們僅有讓學員在自己的電腦中建立 SQLite 的學習環境,而新課我們將以 Python 作為批改測試與資料工程 ETL(Extract Transform Load)的語言,學員將會建置一個 MySQL + Python 的學習環境,這是第四點進階之處。初階課的練習題全部都是由我設計,對於結構化查詢語言的重點拿捏出於自身觀點,而新課除了由我設計的練習題之外,還會納入知名刷題網站 LeetCode 的 Curated SQL 70 題庫,我們將會寫作初階、中階並且能夠免費練習的題目,並附上詳解說明影片,透過完成 LeetCode 網站的題目,學員不但能增進資料查詢的技巧,更能有效強化未來求職時對於機考、面試或筆試的信心,這是第五點進階之處。
圖片來源:https://leetcode.com/problem-list/leetcode-curated-sql-70/
簡而言之,新課較初階課有五點具體的進階之處,分別是:
-
編篡四個章節分別講述資料定義語言、資料操作語言、資料控制語言以及交易控制語言。
-
為了演練資料控制語言採用了 MySQL 關聯式資料庫管理系統。
-
編篡一個章節講述資料表設計。
-
以 Python 作為批改測試與 ETL 的語言,學員將在自己的電腦建置一個 MySQL + Python 的學習環境。
-
詳解知名刷題網站 LeetCode 的 Curated SQL 70 題庫初階、中階並且能夠免費練習的題目。
如果您是符合下列特徵描述的學員:
-
已經完成初階課,卻仍然覺得意猶未盡盡、希望進一步提升自己的資料庫功力的學生。
-
雖然沒有上過初階課,但已經能熟悉撰寫 SQL 查詢資料,想要學更進階的內容,像是通用資料表運算式(Common Table Expression)、視窗函數(Window functions)、資料庫結構與資料表設計等。
-
日常(包含工作、興趣、學習或研究)需要使用資料庫作為分析的數據來源。
-
對於數據分析、資料科學有興趣,未來想從事相關工作(資料分析師、資料工程師、資料科學家)。
邀請您加入我的新課「進階 SQL 的五十道練習:資料庫功力再提升」,預計於 2023–12–11 正式開課,在募資期限(2023–10–11)截止之前還能與初階課「SQL 的五十道練習:初學者友善的資料庫入門」以優惠價格合購,課程詳細資訊:https://hahow.in/courses/645734e4ce9d5fb4442d91cd/main
看完文章要用時卻忘光光?點選下方按鈕
收藏此文章,我隨時都在這等你回來!
想學習更多進階的 SQL 資料課功能與應用嗎?立即加入課程!
▶ 進階 SQL 的五十道練習:資料庫功力再提升
是一位資料分析師、也是資料科學的專業講師,畢業自台灣大學商學研究所,現於台大工商管理學系與台大共同教育中心兼任講師;在台大資工系統訓練班與中華電信學院講授資料科學課程。在專業講師之前任職過 Coupang 資深資料分析師、SAS Taiwan 資料分析顧問、中信銀儲備幹部與 McKinsey Taiwan 研究助理,閒暇時喜歡長跑與寫作。在 Hahow 好學校開設六門資料科學線上課程涵蓋 Python、SQL 與 R 語言;亦有在博碩文化、碁峰資訊出版多本資料科學書籍。