該學哪一套 SQL?
這是我決定要開始學 SQL 之後所遇到的第一個問題,常見的方案就有 Oracle的 MySQL、Microsoft 的 SQL Server、和Open Source 的 PostgreSQL。雖然指令及語法基本上一致,但個別資料庫軟體的操作細節還有其對應的作業平台也都有所差異,這對資工或資管背景的朋友而言可能不會造成太大問題,可是對程式素人的我而言就有差了。
回顧一下前文章提到的重點:
「先確認目的 or 需求是什麼,再來決定要做些什麼。」
於是我先調查了一下我的理想職缺當中,主要要求的是哪一種資料庫系統,再考量到我熟悉的作業系統平台,我決定從 Microsoft SQL Server(以下簡稱 MS SQL)來學習 SQL。
選擇教材資源
在這個網路如此發達,各種線上教學資源多如繁星的時代,我覺得還去報名什麼X匠電腦之類的補習班課程,實在是傻子。我不否認這種成套的付費課程仍舊有其優點,但我秉持著
「如果學習者自己不夠積極努力,那麼無論報名再怎麼濃縮懶人高效的付費套裝課程,也都只是在浪費成本而已。」
於是,我開始蒐羅、篩選適合自己的教材及資源。
說到線上資源,許多人會想到的可能是大專院校當中的 Open Course Ware或是 MOOCs。然而我選擇的是從 YouTube上尋找專業技術人員的教學影片,例如這個:
【SQL Server
tutorial for beginners】
【SQL Server Report Builder 2016】
【SQL Server Reporting Services (SSRS) Tutorial】
【SQL Server Integration Services (SSIS) Tutorial】
【SQL Server Analysis Services (SSAS)】
【SQL Server Report Builder 2016】
【SQL Server Reporting Services (SSRS) Tutorial】
【SQL Server Integration Services (SSIS) Tutorial】
【SQL Server Analysis Services (SSAS)】
這項選擇的原因是,Open Course Ware 或是 MOOCs 的一堂課程影片,通常是針對大學生(甚至說,非進修部的大學生)而設計的,學生們通常有充裕的時間能吸收、思考、練習。但對上班族而言,這樣的一部教學影片內容往往過長,不利吸收、消化、乃至於練習。相對地,YouTube 上的教學影片,依教學者的不同,可以找到將教學單元切割得較簡短細緻的,這樣的彈性相對有利於學習時間瑣碎且短少的社會人士。
另一個常見的資源,當然就是書本。坊間的技術教學書籍也是族繁不及備載,其內容編排上也幾乎都有完整的先後脈絡,對自主學習者而言,其實挑一本自己認為易讀、上手的書即可。我自己選用的教材是這本《學習資料庫的13堂課:使用SQL
Server》
這一本的優點在於,它的編排順序並非像大多數的 MS SQL 技術手冊一樣,依照各項功能分章堆砌而成;而是針對初學者的思路,逐一解說 MS SQL 的概念原理、實務應用、以及對初學者而言時常會產生的疑惑,非常適合像我這樣的程式素人。
管理 or 設計?
這個子標題來自於我選用的另一本參考書籍《Microsoft SQL Server 2012 管理實務》與其對映的另一本參考書籍為《Microsoft SQL Server 2012 設計實務》。
咱們再複習一次那個概念:「先確認目的 or 需求是什麼,再來決定要做些什麼。」我的目標並非成為一名 DBA 或是 MIS,而是要能夠熟練地存取 MS SQL 的資料。這使得我不必精通於設計、建構、維運一套完整的資料庫運作方案,而是將學習重點放在熟練存取資料的方法。
選定好主要教材之後,再來就是如何善用教材,以及持續的練習與思考。我的策略是,先透過書本來瞭解 MS SQL 的主要功能及運作概念,細部零碎的操作方法則透過 YouTube 教學影片來學習。
觸類旁通
學習最有效的方式之一,就是透過過去已知的知識系統,去類比新學習的事務,同時有也助於釐清當中的異同。雖然之前沒有學過 SQL 資料庫系統,但我曾在大學時期的課程中學習過 Microsoft Access 這套資料庫軟體,對於關聯式資料庫的相關概念,也是從那時候來的。在這樣的基礎上,學習的重點就會轉變成:「如何將已知的關聯式資料庫概念,以實地的Transact-SQL指命碼或者圖形介面操作的方式來實踐。」
另一項觸類旁通的管道,即是公司所使用的 ERP 系統。由於該套 ERP 也是以 MS SQL 為基底所寫出來的,於是在對 MS
SQL 的設計原理及功能應用有些認識之後,就能夠思考並慢慢地理解軟體當中的哪些功能該如何設計?Transact-SQL 指命碼該如何撰寫,甚至再進一步區分,哪些功能由是 MS SQL 固有基本函數構成的、哪些功能是由開發者另外撰寫的程式碼構成的。這也都是有效的學習方式之一。
小結
本篇主要在介紹作為程式素人的我,對於 MS SQL 的自主學習方針。許多觀念當然富含濃厚的個人主觀意識,也歡迎交流指教。下一篇文章,或許可以考慮將自主練習的各項 Transact-SQL 程式碼還有測試成果放出來,但是如何將上述內容以易讀的方式呈現,又是另外一個難題了。