在我們正式開始實作之前,先來搞懂一下什麼是 SQL(可以唸成「艾斯-큐-艾爾」或「西闊」,隨你開心),還有它為什麼這麼重要。
SQL 的全名是 Structured Query Language —— 結構化查詢語言。這是一個標準語言,用來跟資料庫互動。不管你選哪個資料庫系統——PostgreSQL、MySQL、Oracle 或其他,你幾乎一定會用到 SQL。
想像一下,SQL 就像你跟資料庫溝通的方式。你可以下指令像「給我看所有超過 18 歲的學生」,然後它就像魔法一樣把你要的資料抓出來。
SQL 的主要任務:
- 抓資料 - 想知道誰有報名「中世紀歷史」這門課。
- 新增資料 - 加一個新學生進資料庫。
- 更新資料 - 修正學生名字的錯字。
- 刪除資料 - 把退學的學生從資料庫移除。
為什麼需要 SELECT?
SELECT 大概是 SQL 裡最重要的指令了。英文意思就是「選擇」。這是你從資料庫抓出你要的資訊的工具。
想像你走進一間有上千本書的圖書館。你想找一本關於 Python 程式設計的書。你不用自己在書架間亂晃,只要跟圖書館員說:「幫我找 Python 的書。」
在資料庫的世界裡,SQL 就是你的圖書館員,而 SELECT 就是「幫我拿...」的指令。
用 SELECT 可以解決的問題舉例:
- 抓出所有學生的名字。
- 查這學期有幾門課可以選。
- 找出分數超過 90 分的學生。
除了抓資料,SELECT 還可以:
- 過濾資料 ——「只給我看超過 18 歲的學生」。
- 排序資料 ——「把學生按姓氏排序」。
- 只顯示你要的欄位,不用全部都秀出來。
SQL 的主要優點
SQL 是一個在各種領域都很吃香的技能。
想分析網路商店的銷售數據?你需要 SQL。
在做醫學研究?還是 SQL。做流程自動化?沒錯,還是 SQL。
為什麼 SQL 這麼酷?
- SQL 幾乎可以跟任何資料庫一起用。
- SQL 的語法設計很直覺。
- 就算是複雜的 SQL 查詢也不難懂。
- 用 SQL 可以處理超大量的資料,還能抓出你要的重點。
PostgreSQL 裡的註解
還有一個很重要的點——SQL 查詢裡的註解。註解真的超有用。第一,可以寫說明或自己的想法。第二,可以用註解把不想執行的程式碼暫時關掉。或者把舊的程式碼註解起來。
我會很常在程式碼旁邊寫註解,所以我們今天就從這個開始。
在 SQL 裡,跟很多程式語言一樣,有單行註解跟多行註解。多行註解長這樣:
/* 註解內容 註解內容 註解內容 */
它是用 /* 開頭,*/ 結尾。你也可以只寫一行。舉例:
/* 註解內容 */
還有一種註解是「從這裡到這行結束」,就像 Java 的「//」或 Python 的「#」。不過在 SQL 裡要寫兩個減號加一個空格。格式長這樣:
-- 註解內容
這是一個比較長的 SQL 查詢範例,右邊那段被註解掉了:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
上面這個例子裡,我們把查詢條件註解掉了,所以 PostgreSQL 只會執行這個查詢:
SELECT * FROM employee
我會在程式碼旁邊寫註解,讓你更容易看懂,或是把難的地方講簡單。我現在就在這麼做!也建議你不要忽略這個超好用的工具。:)
SQL 查詢的風格
SQL 語言設計得很 user-friendly。
首先,查詢語句的大小寫通常沒差:你可以寫 SELECT、Select、SeLecT 或 select,都可以跑。再來,換行基本上也沒差。資料庫系統還是會把你的查詢當成一行來處理。所以你寫查詢的時候有滿大的自由度。
不過,排版好的 SQL 程式碼真的比較好讀、好懂、好 debug、好維護。所以有一些大家都認同的排版建議。
排版建議
- SQL 關鍵字用大寫。像
SELECT、FROM、WHERE、ORDER BY這些,大家都習慣用大寫。這樣可以一眼看出來跟資料表或欄位名稱的差別。 SELECT、FROM、WHERE跟其他主要部分建議都從新的一行開始。- 查詢結尾的分號
;是標準的指令分隔符。當你在一個 script 或 code block 裡要連續執行多個查詢時就一定要加。建議每個 SQL 查詢都用分號結尾。
最佳排版範例:
SELECT customer_id, full_name, email, registration_date
FROM customers
WHERE delivery_address = 'Anytown';
這個查詢你也可以用其他排版方式寫。現在不用太糾結這個。記得,SQL 沒有唯一強制的排版規則:重點就是寫出來要清楚、好讀。
GO TO FULL VERSION