歡迎來到 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)」。幾乎所有的查詢都會用到「三大金剛」指令:SELECT、FROM 和 WHERE。
記憶法: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 是你在電腦科學領域中能學到的最實用的技能之一。它遵循非常合乎邏輯的規則。如果你的程式碼無法運作,請檢查是否有遺漏逗號、引號,並確保表格名稱拼寫正確。你一定做得到的!