歡迎來到 SQL 的世界!

在本章中,我們將學習結構化查詢語言 (Structured Query Language),通常簡稱為 SQL(讀音類似英文單字 "sequel")。

想像一下一個擁有數百萬本書的龐大圖書館。如果你想找出某位作者在 1994 年撰寫的所有書籍,手動在書架間尋找可能會花上幾個星期。SQL 就好比一位超級圖書管理員。你只需下達明確的指令,它就能在瞬間從關聯式資料庫 (relational database) 中尋找、新增或修改資訊。無論你是使用 Instagram、檢查銀行餘額還是玩線上遊戲,SQL 可能都在後台默默地處理這些資料。

如果剛開始覺得程式碼很多,請別擔心。SQL 的設計非常接近英語,一旦你學會了基本的「句子」,就能輕鬆地與任何資料庫進行溝通!

1. 定義資料庫:建立表格

在儲存資料之前,我們需要一個地方來存放它們。在關聯式資料庫中,資料儲存在表格 (tables) 內。使用 SQL 來設定這些表格的過程稱為資料定義 (Data Definition)

CREATE TABLE 指令

要建立新表格,我們使用 CREATE TABLE 指令。你需要告訴資料庫表格的名稱,以及每一欄(屬性/attribute)將儲存什麼類型的資料。

範例:建立學生表格
CREATE TABLE Students (
  StudentID INTEGER PRIMARY KEY,
  FirstName VARCHAR(20),
  LastName VARCHAR(20),
  DateOfBirth DATE,
  ClassID INTEGER FOREIGN KEY REFERENCES Classes(ClassID)
);

等等,那些額外的單字是什麼意思?

INTEGER:告訴資料庫該欄位將儲存整數。
VARCHAR(20):代表 "Variable Character"(可變字元)。它用於文字(如姓名)。括號中的數字是長度上限。
DATE:用於儲存日期。
PRIMARY KEY(主鍵):這是每一列的唯一識別碼。沒有兩個學生的 StudentID 可以相同,這就像你的指紋一樣!
FOREIGN KEY(外鍵):這是指向另一個表格中主鍵的連結。這就是我們如何在表格之間建立「關聯」的方法。

快速複習:要建立一個表格,你需要設定名稱、欄位名稱以及對應的資料型別 (data types)

重點總結:CREATE TABLE 在你開始輸入任何實際名稱或細節之前,就先定義好了資料的結構。

2. 檢索資料:「三大金剛」

使用 SQL 最常見的操作就是向資料庫提問,這稱為「查詢 (querying)」。幾乎所有的查詢都會用到「三大金剛」指令:SELECTFROMWHERE

記憶法:S.F.W. (Stay For Water)

SELECT你想看哪些欄位?
FROM它們在哪些表格裡?
WHERE你要篩選資料的特定規則是什麼?

範例:找出所有姓氏為 'Smith' 的學生姓名
SELECT FirstName, LastName
FROM Students
WHERE LastName = 'Smith';

使用萬用字元 (*)

如果你不想逐一輸入欄位名稱,想查看表格中的所有欄位,可以使用星號 * 符號。你可以把它想像成一個「全選」按鈕。

SELECT * FROM Students;

排序結果

你可以使用 ORDER BY 來按字母或數字順序排列清單。加上 ASC 表示升序(A-Z),或使用 DESC 表示降序(Z-A)。
範例: SELECT * FROM Students ORDER BY LastName ASC;

連接表格 (Joining Tables)

在 AQA 課程大綱中,你需要知道如何從多個表格中獲取資料。由於表格是透過鍵值 (keys) 連結的,我們可以在 WHERE 子句中將它們「連接 (join)」起來。

類比:如果你有一份 'CustomerIDs' 清單和另一份 'Orders' 清單,你可以使用它們共有的 ID 將其連接起來,查看是哪個人購買了哪項商品。

範例:查看學生的姓名以及他們的班級名稱
SELECT Students.FirstName, Classes.ClassName
FROM Students, Classes
WHERE Students.ClassID = Classes.ClassID;

你知道嗎?SQL 最初被稱為 SEQUEL (Structured English Query Language),但後來因為商標爭議而改名。不過,大多數人仍然習慣讀作 "sequel"!

重點總結:使用 SELECT 選擇欄位,FROM 選擇表格,並使用 WHERE 來篩選結果以及連接多個表格。

3. 管理資料:新增、修改與刪除

表格建立完成後,你需要能夠新增資訊、修正錯誤或刪除不再需要的資料。

INSERT:新增資料列

當有新學生入學時,我們使用 INSERT INTO 來新增他們。

INSERT INTO Students (StudentID, FirstName, LastName)
VALUES (105, 'Amina', 'Hussain');

UPDATE:修改現有資料

如果 Amina 改了姓氏,我們不需要刪除她,只需要 UPDATE 她的記錄即可。請小心!使用 UPDATE 時務必加上 WHERE 子句,否則你可能會不小心把資料庫中每一個人的名字都改掉!

UPDATE Students
SET LastName = 'Khan'
WHERE StudentID = 105;

DELETE:移除資料

如果有學生離校,我們使用 DELETE。和 UPDATE 一樣,務必使用 WHERE,以免不小心刪掉整個資料庫!

DELETE FROM Students
WHERE StudentID = 105;

常見錯誤警示!學生常忘記在文字值(如 'Smith' 或 'Khan')周圍加上單引號。數字不需要引號,但文字和日期必須加上!

重點總結:INSERT 用於新增記錄,UPDATE 修改現有記錄,DELETE 移除記錄。這三者都依賴 WHERE 來確保你操作的是正確的資料。

4. 複習總結表

指令用途
CREATE TABLE — 設定包含欄位和資料型別的新表格。
SELECT — 選擇你想查看的欄位。
FROM — 指定資料所在的表格。
WHERE — 篩選資料並連接多個表格。
ORDER BY — 對結果進行排序 (ASC 或 DESC)。
INSERT INTO — 新增一筆全新的資料列。
UPDATE — 修改表格中已存在的資料。
DELETE — 永久移除表格中的一筆記錄。

最後的鼓勵

SQL 是你在電腦科學領域中能學到的最實用的技能之一。它遵循非常合乎邏輯的規則。如果你的程式碼無法運作,請檢查是否有遺漏逗號、引號,並確保表格名稱拼寫正確。你一定做得到的!