前面幾篇我們討論的都是理論,像是資料庫的架構要怎麼設計。
從這篇開始,我們終於要動手操作資料表和資料了!
不過在寫程式之前,有一件事要先說明。
市面上有很多種資料庫系統,像是 MySQL、PostgreSQL、MSSQL 等等。
它們雖然都叫「關聯式資料庫」,語法也都是 SQL 風格,但細節上還是有些不同。
所以這個系列文章會用 Pseudo Code(偽程式碼) 來教學。
為什麼要用 Pseudo Code?
什麼是 Pseudo Code?
Pseudo Code 就是「假的程式碼」,用來表達邏輯和概念,而不是能直接執行的程式。
在這個系列文章中,我們會用中文來寫大部分內容,只有在「各系統都通用的關鍵字」才會標註英文。
這樣你看到中文就知道這邊要填什麼,看到英文就知道這是 SQL 的標準寫法。
它要解決什麼問題?
MySQL、PostgreSQL、MSSQL 這些資料庫系統,都是用 SQL 語法來操作資料。
但在實際的語法細節上,它們還是有一些不同。
舉個例子:
- 函式名稱不同:同樣是取得當前時間,MySQL 用
NOW(),PostgreSQL 也用NOW(),但 MSSQL 用GETDATE() - 資料型別寫法不同:整數在不同系統可能寫成
INT、INTEGER、BIGINT,細節各有差異
如果我們直接教某一套系統的語法,你換到另一個系統時可能會卡住。
但如果你先用 Pseudo Code 理解「為什麼這樣設計」和「共同的原理」,以後面對任何系統都能快速上手。
Pseudo Code 的表示方式
在接下來的教學中,我會用以下的格式來表示不同類型的內容:
固定的關鍵字:粗體黑字
如果是 SQL 內建且固定的寫法,我會用 粗體黑字 來表示。
例如:SELECT、FROM、WHERE
這些關鍵字在各個資料庫系統中都是一樣的。
需要替換的內建語法:一般字體
如果是內建的語法,但每個資料庫系統寫法不同,需要你自己去查詢替換的,我會用一般字體來寫。
例如:資料型別(像整數、字串的寫法各系統不同)
可以自己命名的內容:花括號 {}
如果是你可以自己取名的東西,像是表格名稱、欄位名稱,我會用花括號包起來。
例如:{表格名稱}、{欄位名稱}
💡 為什麼叫「花括號」?因為大括號、中括號有時候長得很像分不清楚,花括號(Curly Brackets)有彎曲的造型,比較好辨認。
選用的語法:方括號 []
如果某個語法是「可選的」,不一定要寫,我會用方括號包起來。
例如:[ORDER BY {欄位名稱}]
這表示排序這個功能你可以加,也可以不加。
多個選項擇一:直線 |
在方括號裡面,如果有多個選項可以選擇,我會用直線(豎線)來分隔。
例如:[ASC | DESC]
這表示你可以選擇「升冪排序 ASC」或「降冪排序 DESC」。
符號總整理
| 符號 | 名稱 | 英文 | 用途 |
|---|---|---|---|
{} | 花括號 | Curly Brackets | 可自己命名的內容 |
[] | 方括號 | Square Brackets | 選用的語法 |
() | 圓括號 | Parentheses | SQL 語法本身使用 |
| | 直線/豎線 | Pipe | 多個選項擇一 |
SQL 的分號規則
在寫 SQL 的時候,有一個很重要的觀念:換行不代表指令結束。
換行 ≠ 分開指令
你可能會習慣寫完一行就按 Enter 換行。
但對 SQL 來說,換行只是讓程式碼比較好看而已,它不會因為你換行就認為「這個指令結束了」。
SQL 會把所有內容當成同一個指令,一路往下讀,直到看見特定符號才停下來。
那個符號就是分號 ;。
用分號區隔不同指令
如果你有多個不同的指令要執行,必須在每個指令的結尾加上 半形分號 ;。
這樣 SQL 才會知道「這個指令到這裡結束,下一個指令要開始了」。
指令一;
指令二;
指令三;⚠️ 注意:一定要用「半形」分號(英文輸入法的分號),不是全形分號。
實際範例
假設你要建立一個表格,然後新增一筆資料:
CREATE TABLE {員工表};
INSERT INTO {員工表} ...;沒有分號的話,系統會以為這是同一個指令而出錯。
小結
這篇文章介紹了接下來學習 SQL 時會用到的 Pseudo Code 表示方式:
- 為什麼用 Pseudo Code:因為各家資料庫系統語法略有不同,用 Pseudo Code 可以先專注在觀念,之後銜接任何系統都容易
- 符號約定:
- 粗體黑字 = 固定的 SQL 關鍵字
- 花括號
{}= 可自己命名 - 方括號
[]= 選用語法 - 直線
|= 多選一
- 分號很重要:SQL 不看換行,要用半形分號
;來區隔不同指令
理解這些約定後,接下來的語法教學你就能看懂範例,並且更專注在「為什麼這樣設計」的核心觀念上了。