TL; DR
在與關聯式資料庫互動密不可分的資料科學與軟體開發領域,結構化查詢語言對於有志從事相關工作的學習者是重要且難以取代的,也因而體現出歷久彌新的現象,最後盤點了新課相較於初階課的五個進階之處,並期待學員的加入。
新課「進階 SQL 的五十道練習:資料庫功力再提升」,課程詳細資訊:https://hahow.in/cr/sqlfiftyplus
結構化查詢語言的歷久
結構化查詢語言(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 排名第十。
為什麼結構化查詢語言不論是在以資料科學和科學計算為主體的 Kaggle 與 IEEE,或者在以軟體開發為主體的 Stack Overflow 與 Tiobe Index 都名列前茅呢?理由也相當直觀,結構化查詢語言是與關聯式資料庫互動的原生語言,在資料科學和科學計算領域中,常見的資料來源之一為關聯式資料庫,是專案的起手式,必須仰賴結構化查詢語言作為檢索資料的媒介,大多數只需仰賴語言中的查詢功能。在軟體工程領域中,關聯式資料庫扮演系統與應用程式的後端,需要仰賴語言全面性的功能,包含資料定義、資料操作、資料控制甚至交易控制。一言以蔽之,有關聯式資料庫的地方,就有結構化查詢語言,因此在軟體工程與資料科學作為資訊科技最大宗的專業領域中,結構化查詢語言仍能持續譜出「彌新」樂章。
進階 SQL 的五十道練習課程設計
從結構化查詢語言的歷久彌新,我們知道了想要從事資料科學或軟體開發的相關工作必須要懂得資料庫與結構化查詢語言,如果從事資料科學的分析相關工作,例如:資料科學家、資料分析師或者商業分析師,那麼具備成熟的查詢技能即可掌握自如;如果從事資料科學的工程相關工作、軟體開發相關工作,例如:資料工程師或後端工程師,那麼就會要求全面掌握結構化查詢語言的功能,對於資料定義、資料操作、資料控制與交易控制嫻熟且有經驗。
初階課花費了九成的篇幅與時間學習基礎的觀念、查詢敘述以及技巧,對於其他的功能未做仔細地討論,因此新課設計獨立的四個章節分別講述資料定義語言、資料操作語言、資料控制語言以及交易控制語言,這是第一點進階之處。由於課程包含了資料控制語言,這是針對多人使用的情境下,以結構化查詢語言進行資料與使用者權限設定的功能,因此初階課所使用的輕量化、供單人使用的關聯式資料庫管系統 SQLite 就不適用,根據 DB-Engine 網站的排名,MySQL 排名第二,更是免費使用、開源授權的排名第一,於是新課改採 MySQL 關聯式資料庫管理系統,這是第二點進階之處。
初階課所使用的學習資料庫都是以 .db 的檔案格式提供給學員使用,對於資料庫結構和資料表設計的概念未做深入討論,而新課除了在資料操作語言上講述主鍵、外鍵的約束觀念,更獨立一個章節探討資料對應關係、正規化以及實體關係圖,讓學員對於資料庫的建置不再霧裡看花,這是第三點進階之處。
初階課我們僅有讓學員在自己的電腦中建立 SQLite 的學習環境,而新課我們將以 Python 作為批改測試與資料工程 ETL(Extract Transform Load)的語言,學員將會建置一個 MySQL + Python 的學習環境,這是第四點進階之處。初階課的練習題全部都是由我設計,對於結構化查詢語言的重點拿捏出於自身觀點,而新課除了由我設計的練習題之外,還會納入知名刷題網站 LeetCode 的 Curated SQL 70 題庫,我們將會寫作初階、中階並且能夠免費練習的題目,並附上詳解說明影片,透過完成 LeetCode 網站的題目,學員不但能增進資料查詢的技巧,更能有效強化未來求職時對於機考、面試或筆試的信心,這是第五點進階之處。
簡而言之,新課較初階課有五點具體的進階之處,分別是:
編篡四個章節分別講述資料定義語言、資料操作語言、資料控制語言以及交易控制語言。
為了演練資料控制語言採用了 MySQL 關聯式資料庫管理系統。
編篡一個章節講述資料表設計。
以 Python 作為批改測試與 ETL 的語言,學員將在自己的電腦建置一個 MySQL + Python 的學習環境。
詳解知名刷題網站 LeetCode 的 Curated SQL 70 題庫初階、中階並且能夠免費練習的題目。
邀請您加入我的新課「進階 SQL 的五十道練習:資料庫功力再提升」,預計於 2023–12–11 正式開課,在募資期限(2023–10–11)截止之前還能與初階課「SQL 的五十道練習:初學者友善的資料庫入門」以優惠價格合購,課程詳細資訊:https://hahow.in/cr/sqlfiftyplus