Station 1 · 第一站
為什麼世界需要 資料庫?
先別急著學咒語。我們花 60 秒,搞清楚這東西到底為什麼存在。
📷 IG
小美 · 10 min
阿傑 · 32 min
阿明 · 1 hr
小華 · 2 hr
💬 LINE
媽媽 · 早安貼圖
老闆 · 加班通知
同事 · 午餐?
小美 · 在嗎?
🛒 蝦皮
藍牙耳機 $1,290
咖啡豆 $580
運動襪 $199
護手霜 $320
你滑的每個畫面,都是資料庫 在後台說話。 不是檔案、不是 Excel ── 是更聰明的東西。
繼續 →
Station 1 · 直覺測驗
看到這張表,你猜這是哪個 App?
資料庫工程師看一眼資料表,就能猜到背後的功能。試試看 ──
user_id video_id watch_seconds liked
1042 v_aB3 47 true
1042 v_xY9 3 false
1042 v_kP2 120 true
2871 v_aB3 92 true
📷 Instagram
▶️ YouTube
💬 LINE
前往咖啡廳 →
☕
歡迎來到「資料咖啡店」
店長阿明在等你。今天起,你就是這裡的新員工。
開始打工 →
Station 2 · 第一天上班
這台筆電裡,有兩疊「卡片」
我們店裡所有東西都記在這台電腦的「資料庫」裡。資料庫不是什麼神祕的東西 ── 就是一堆表格 而已,跟 Excel 很像。
Table
orders
order_id
customer
drink_id
total
今日訂單 · 18 筆
左邊 menu 記飲料,右邊 orders 記訂單。簡單吧?
客人來了 →
Station 2 · 你的第一句咒語
1
想看 menu 表的全部資料,要打這句咒語:SELECT * FROM menu;
2
拆開來看其實超直白:SELECT = 我要看 * = 全部欄位 FROM menu = 從 menu 這張表
3
最後加分號 ; 代表「我講完了」。在下面打打看~
下一位客人 →
Station 2 · 挑剔的客人
全部欄位太多了。把 * 換成欄位名就行:SELECT name, price FROM menu;
menu 表的欄位 :id、name、category、price
換一張表試試 →
Station 2 · 換一張表
同樣的咒語,可以用在不同的表上。試試看 orders 這張:客人問今天有幾筆訂單,他只要看訂單編號 和金額 。
orders 表的欄位 :order_id、customer、drink_id、total
點餐員模擬器 →
Station 2 · 點餐員模擬器
三位客人同時上門
點選下方任一位客人,看他要什麼,然後寫 SQL 回答。
完成 0 / 3
🧑🦱
「orders 表給我看 customer 跟 total 兩欄就好。」
下班結算 →
Station 2 · 下班結算
你完成了第一天
才 8 分鐘,你已經會讀資料庫了。
═══ 第一天結業報表 ═══
資料咖啡店 · 兼職員工
⏱ 完成時間 8 分鐘
✨ 學會的咒語 SELECT
🎖 解鎖徽章 3
🏆 累積 XP +0
下一站 🔍 找到你要的東西
明天教你怎麼從一堆資料裡「只挑出特定的」── 例如: 找出價格大於 100 元的飲料、上週賣最好的前三名…
前往站 3 →
↺ 重新開始
🔍
第二天 · 偵探日
「昨天教你『看』資料,今天教你『找』資料。 準備好戴上偵探帽了嗎?」
開始辦案 →
昨天 SELECT 是把資料「全部撈出來」。但客人很少這樣問問題 ── 他們都很挑:
「給我看價格大於 100 的」、「名字含『拿鐵』 的有哪些」、「最便宜的前三名 是什麼」⋯⋯
今天我們要學三招:WHERE (過濾)、ORDER BY (排序)、LIKE (模糊搜尋)。
Station 3 · 第一招:過濾
客人要找便宜 的飲料
我預算不多,給我看價格小於 100 元 的所有東西。
用 WHERE 加條件!它的位置在 FROM 後面:
1
基本格式:
SELECT * FROM 表名 WHERE 條件;
2
條件可以是:price < 100(小於)、price = 120(等於)、price >= 150(大於等於)
3
文字條件要加單引號:category = '飲料' ── 數字不用,文字一定要 ✨
任務 :找出 menu 裡 price 小於 100 的所有商品。
學下一招 →
Station 3 · 第二招:多重條件
挑剔客人來了
我要找「飲料 」類別、而且「價格在 100 到 140 之間 」的。
兩個條件要同時滿足?用 AND 。 任一條件即可?用 OR 。
1
AND(同時成立):
WHERE category = '飲料' AND price <= 140
2
OR(任一成立):
WHERE name = '拿鐵' OR name = '美式'
3
範圍可以拆成兩個:price >= 100 AND price <= 140
(之後會教更簡潔的 BETWEEN)
任務 :找出 category 是「飲料」 ,而且 price 介於 100 到 140 之間 (含)的商品。
第三招 →
Station 3 · 第三招:排序與排行榜
老闆想看暢銷榜
老闆問:「給我看 menu 裡最貴的前三名 。」 我們需要 排序 + 限制筆數 兩個工具。
1
ORDER BY 欄位 ── 預設由小到大(升冪 ASC):
ORDER BY price 便宜的在最前面
2
DESC (descending)= 由大到小(降冪):
ORDER BY price DESC 貴的在最前面
3
LIMIT N 只取前 N 筆。組合起來就是排行榜:
SELECT * FROM menu ORDER BY price DESC LIMIT 3;
任務 :找出 menu 裡 價格最貴的前 3 名 。
提示:DESC 表示由大到小,LIMIT 3 取前三筆
執行
最後一招 →
Station 3 · 第四招:模糊搜尋
客人記不得完整名字
那個⋯什麼「拿鐵」 的飲料你們都有嗎?我忘記叫什麼了。
他不記得完整名字,只知道「含拿鐵」。這時候 = 就不夠用了 ── 用 LIKE + 萬用字元 % 。
1
% 代表「任何字、任何長度」(包含空字串):
name LIKE '%拿鐵%' 名字裡有「拿鐵」就符合(拿鐵、抹茶拿鐵都中)
2
'拿鐵%' ── 開頭是「拿鐵」
'%拿鐵' ── 結尾是「拿鐵」
'%拿鐵%' ── 任何位置含「拿鐵」
任務 :找出 menu 裡 名字含「拿鐵」 的所有飲料。
破案實戰 →
Station 3 · 三件懸案
資料偵探實戰
點選任一案件、寫 SQL 破解。三件全破就拿「資料偵探」徽章 🔎
破案進度 0 / 3
🕵️
案件 1 找出 orders 裡 金額大於 130 的所有訂單。
🔍
案件 2 menu 的「甜點 」類別裡,最便宜的前 2 名 是哪些?
🔎
案件 3 orders 裡 customer 名字含「小」 的所有訂單。
下班結算 →
Station 3 · 下班結算
你已經是偵探 了
能在一萬筆資料裡,精準撈出你要的那幾筆。
═══ 第二天結業報表 ═══
資料咖啡店 · 偵探實習生
⏱ 累積學習 — 分鐘
✨ 新學的招式 WHERE / ORDER BY / LIKE
🎖 累計徽章 —
🏆 累積 XP +0
下一站 🏗️ 當建築師
明天你要從「使用別人的資料庫」進化到「設計自己的資料庫」 ── 建立你自己的個人專案資料表!
前往站 4 →
↺ 重新開始
🏗️
第三天 · 建築師
「前兩天你都在『查』別人的資料。 今天,我們要從零開始蓋一張屬於你自己的表 。」
挽起袖子 →
你會學到 4 個改變人生的指令:
CREATE TABLE(蓋房子)、
INSERT(搬東西進去)、
UPDATE(改裝修)、
DELETE(拆除)。
⚠ 警告:UPDATE 和 DELETE 是 SQL 世界裡最危險的兩個指令。 等等你會親身體驗為什麼。
Station 4 · 你的個人專案
挑一個你真的有興趣 的主題
接下來這張表會記錄你的真實資料 ── 課程結束時可以下載成檔案保存。挑一個吧:
蓋房子 →
Station 4 · 第一步:CREATE TABLE
先蓋好 房子的格子
建表前,你要先決定每個欄位放什麼型別 。就像填表單會分「文字框」、「數字框」、「日期框」 ── 資料庫嚴格得多:
1
四種最常見的型別:
INTEGER ── 整數(1, 42, -7)
TEXT ── 文字('拿鐵', '小明')
REAL ── 小數(4.5, 3.14)
DATE ── 日期('2026-04-27')
2
主鍵 (PRIMARY KEY)= 每筆資料的身份證號。通常用 INTEGER + AUTOINCREMENT 自動編號:
id INTEGER PRIMARY KEY
3
建表的完整語法:
CREATE TABLE 表名 (
欄位1 型別,
欄位2 型別,
...
);
提示:欄位之間用逗號分開、最後一個欄位後面不用逗號
執行
塞資料進去 →
Station 4 · 第二步:INSERT
把你的 資料搬進去
表格已經蓋好但還是空的。現在放你真實的資料 進去 ── 這張表會記錄你接下來的所有操作。
1
INSERT 的兩種寫法:
INSERT INTO 表名 (欄位1, 欄位2) VALUES (值1, 值2);
INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);
2
文字一定要加單引號 '...',數字不用。
主鍵(id)通常省略不填,資料庫會自動編號。
已新增筆數:
0
/ 3
你目前的資料:
(還沒有資料 ── 寫一句 INSERT 試試)
學 UPDATE →
Station 4 · 第三步:UPDATE(小心⚠)
改資料 ── 但有個致命陷阱
想改資料?基本語法很簡單:
UPDATE 表名 SET 欄位 = 新值 WHERE 條件;
但 ── 如果你忘記寫 WHERE,會發生什麼事? 我們先做個實驗。
⚠ 危險實驗
下面的編輯器已經幫你寫好了一句沒有 WHERE 的 UPDATE 。先按執行,看看會發生什麼。
看到了嗎? 沒有 WHERE 的 UPDATE,會把整張表的所有資料 全部改成同一個值。
在真實世界裡,這已經害過無數工程師被開除。記住這個教訓:
寫 UPDATE 之前,先想清楚 WHERE。
修復任務 :寫一句 UPDATE,用 WHERE 精準鎖定第一筆資料(id = 1) ,把它的某個欄位改回原值。
提示:用 WHERE id = 1 精準鎖定那一筆
執行
學最後一招 →
Station 4 · 第四步:DELETE(更小心⚠⚠)
刪除 ── 比 UPDATE 更不可逆
DELETE 比 UPDATE 更狠 ── 改錯還能改回來,刪掉了就真的沒了 (除非你有備份,那是站 6 的故事)。
所以業界的肌肉記憶是:
寫 DELETE 之前,先用 SELECT 確認你要刪的是哪幾筆。
1
DELETE 的語法(永遠要有 WHERE):
DELETE FROM 表名 WHERE 條件;
2
業界肌肉記憶 :先寫 SELECT 看清楚,再把 SELECT * 換成 DELETE:
SELECT * FROM mytable WHERE id = 2; ← 先確認
DELETE FROM mytable WHERE id = 2; ← 再刪除
下班結算 →
Station 4 · 下班結算
你蓋了第一棟房子
而且你不只會查資料 ── 你能設計、新增、修改、刪除。 這是真正的「資料庫工程師」基本功。
═══ 第三天結業報表 ═══
資料咖啡店 · 見習建築師
⏱ 累積學習 — 分鐘
🏗 你的個人專案 —
✨ 新學的指令 CREATE / INSERT / UPDATE / DELETE
🎖 累計徽章 —
🏆 累積 XP +0
📦 下載你的個人資料庫
把你建立的這張表匯出成 .sql 檔,未來可以匯入任何資料庫繼續使用。
📥 下載 .sql 檔
下一站 🤝 資料的人際關係
明天你要學 SQL 最重要、也最讓新手頭痛的招式:JOIN ── 把多張表連起來看 。我們會用動畫慢動作演示給你看。
前往站 5 →
↺ 重新開始
🤝
第四天 · JOIN 動畫劇場
「今天要學 SQL 最重要的招式 ── 把多張表連起來 。 我會用慢動作演示給你看。」
準備開演 →
到目前為止你都只看一張表 ── menu 或 orders 或自己建的表。但真實世界裡,資料庫常有 數十、上百張 表,問題的答案常常分散在好幾張表之間。
今天先從一個血淋淋的反面教材開始,看看「不用 JOIN」會發生什麼災難。
Station 5 · 為什麼一張表不夠
把所有東西 塞進一張表的災難
想像我們把會員的所有資訊(等級、加入日期)通通塞進 orders 表,會變這樣:
😱 fat_orders(反面教材)
order_id
customer
level
joined
drink
total
1001 小美 VIP 2024-01-15 拿鐵 120
1009 小美 VIP 2024-01-15 抹茶拿鐵 140
1017 小美 VIP 2024-01-15 司康 70
… … … … … …
看到問題了嗎?
小美下了 3 次單,她的等級和加入日期就重複寫了 3 次 ── 浪費空間
如果小美要把名字改成「小美美」,要改所有相關列 ,漏改一筆就資料不一致
路人甲還沒下過單,根本進不了這張表,他的會員資料就消失了
正確做法是把資料分開放 :會員資訊一張表、訂單資訊一張表,需要的時候再用 JOIN 把它們連起來。
看正確做法 →
Station 5 · 兩張表的秘密橋樑
用外鍵 把兩張表牽起來
我已經幫你建好新的 customers 表了。它跟 orders 表透過客人名字 互相對應。
customers
id name level
1 小美 VIP
2 阿傑 常客
9 路人甲 一般
…共 9 位
orders
order_id customer total
1001 小美 120
1002 阿傑 130
1009 小美 140
…共 18 筆
橋樑在哪? customers 表的 name ↔ orders 表的 customer,兩個欄位的值是同一個東西,這就是「外鍵 」的概念。
想看「每張訂單背後的會員等級是什麼」?單看 orders 表答不出來、單看 customers 表也答不出來 ── 必須把兩張表連起來 。下一步教你怎麼做。
學 INNER JOIN →
Station 5 · 動畫劇場 · INNER JOIN
看 JOIN 怎麼表演 給你看
下面是兩張迷你表(為了動畫好看,只取 4 筆資料)。按「執行 JOIN」看它怎麼運作 ──
準備就緒。按下方按鈕開演 ↓
customers (左)
id name level
1 小美 VIP
2 阿傑 常客
3 阿明 常客
9 路人甲 一般
orders (右)
order_id customer total
1001 小美 120
1002 阿傑 130
1003 阿明 100
1009 小美 140
▶ 執行 INNER JOIN(慢動作)
↺ 重新播放
看到了嗎?INNER JOIN 只保留兩邊都有的資料 :
✅ 小美在 customers 有、在 orders 也有 → 連成 2 列(小美下了 2 單)
✅ 阿傑在兩邊都有 → 連成 1 列
❌ 路人甲在 customers 有、但在 orders 沒紀錄 → 被排除
1
INNER JOIN 的語法:
SELECT 欄位 FROM 表A INNER JOIN 表B ON 表A.欄位 = 表B.欄位;
任務 :用 INNER JOIN 連 orders 和 customers,列出 order_id、customer、level、total 四個欄位。
提示:ON orders.customer = customers.name
提示:用 orders.customer = customers.name 當連接條件
執行
學 LEFT JOIN →
Station 5 · 動畫劇場 · LEFT JOIN
不想漏掉任何人 怎麼辦?
老闆問:「我們有哪些會員從來沒下過單 ?」
INNER JOIN 會把這些人排除掉,因為他們在 orders 表沒紀錄 ── 但這正是我們要找的人!
LEFT JOIN 救援登場:左邊那張表的每一列都保留 ,右邊沒對應的就用 NULL 補上。
注意觀察:路人甲(左邊有、右邊無)這次會發生什麼?
customers (左 ★)
id name level
1 小美 VIP
2 阿傑 常客
3 阿明 常客
9 路人甲 一般
orders (右)
order_id customer total
1001 小美 120
1002 阿傑 130
1003 阿明 100
1009 小美 140
▶ 執行 LEFT JOIN(慢動作)
↺ 重新播放
看到差別了嗎?路人甲被保留下來 ,他在 orders 那邊找不到對應,所以右邊欄位填 NULL。
這就是 LEFT JOIN 跟 INNER JOIN 唯一的差別 ── 左表保留主義 。
1
找出「沒下過單」的會員:先 LEFT JOIN,再用 WHERE 右表欄位 IS NULL 過濾:
SELECT customers.name FROM customers LEFT JOIN orders ON customers.name = orders.customer WHERE orders.order_id IS NULL;
任務 :找出 customers 裡從來沒下過單 的會員,列出他們的 name 和 level。
提示:LEFT JOIN + WHERE orders.order_id IS NULL
提示:customers 放左、LEFT JOIN orders、WHERE orders.order_id IS NULL
執行
業務查詢實戰 →
Station 5 · 業務查詢實戰
老闆會問你的 三個問題
用你剛學會的 JOIN 解決真實業務問題。三題全破拿「連連看大師」徽章 🔗
完成 0 / 3
👔
業務 1 列出每筆訂單的 客人名字、等級、訂單金額 。
📊
業務 2 只列出「VIP」等級 的客人下過的所有訂單,包含 customer、total。
下班結算 →
Station 5 · 下班結算
你掌握了 SQL 的核心招式
JOIN 是分水嶺 ── 會 JOIN 的人才能應付真實世界的資料庫工作。
═══ 第四天結業報表 ═══
資料咖啡店 · 連結大師
⏱ 累積學習 — 分鐘
✨ 新學的招式 INNER JOIN / LEFT JOIN
🎖 累計徽章 —
🏆 累積 XP +0
下一站 🛡️ 危險動作與後悔藥
還記得站 4 你經歷過的那場「沒有 WHERE 的災難」嗎? 明天你會學到怎麼用 Transaction 把資料救回來。
前往站 6 →
↺ 重新開始
🛡️
第五天 · 後悔藥的藝術
「還記得站 4 你親眼目睹的那場災難嗎? 今天,我教你怎麼把災難倒帶 。」
學救援 →
工程師世界有句話:「不是會不會出事,是何時出事 」。
所有人都會打錯 SQL,差別只在於 ── 老手會在打錯之前 就把所有危險操作放進「後悔藥包裝」。
這個包裝叫 Transaction 。
Station 6 · 三個救命關鍵字
把它想成文書處理的 Ctrl+Z
你寫文件時,按錯字會用 Ctrl+Z 還原;按 Ctrl+S 儲存才算數。
Transaction 就是把這個概念搬到資料庫 。
↺
ROLLBACK
「糟糕打錯了!當作什麼都沒發生 」
1
標準的後悔藥流程:
BEGIN;
UPDATE menu SET price = 999; ← 這時候改的還沒生效
SELECT * FROM menu; ← 先看看結果
ROLLBACK; ← 不喜歡?通通取消
2
確認 OK 才存檔:
BEGIN;
UPDATE menu SET price = 130 WHERE name = '拿鐵';
COMMIT; ← 正式生效,無法再 ROLLBACK
3
關鍵心法 :危險操作之前,永遠先 BEGIN。確認後再決定 COMMIT 或 ROLLBACK。
⚠ 但 COMMIT 之後就無法 復原了 ── 這時要靠備份(下一節教)
親手練一次 →
Station 6 · 實戰練習
親自體驗後悔的快感
下面我幫你準備了一個 menu 的備份 (叫 menu_drill,不會影響原表)。
你會做兩個小練習:先「亂改後 ROLLBACK」,再「精準改後 COMMIT」。
練習 1:ROLLBACK 救援
照下面這四行依序執行,看
menu_drill 的價格在
每一步 有什麼變化:
BEGIN;
UPDATE menu_drill SET price = 999;
SELECT * FROM menu_drill;
ROLLBACK;
看到了嗎?UPDATE 把所有價格改成 999 的那一瞬間 確實生效(你的 SELECT 看到的是 999),但 ROLLBACK 之後 ── 整個 transaction 像沒發生過 。
檢查一下:
練習 2:COMMIT 確認
這次用 BEGIN/COMMIT 包起來,把
拿鐵 的價格從 120 改成 130:
BEGIN;
UPDATE menu_drill SET price = 130 WHERE name = '拿鐵';
COMMIT;
提示:記得加 WHERE,COMMIT 之後就無法後悔了
執行
災難救援實戰 →
Station 6 · ⚠ 限時救援
災難現場 · 救火行動
🚨
系統警報
新手工程師剛剛沒寫 WHERE 就 DELETE ,
orders_critical 表的訂單全沒了 。
所幸他剛剛還沒 COMMIT。
你的任務:在 90 秒內 ROLLBACK 救回所有訂單。
🚒 開始救援
救援指引 :新手工程師剛剛只下了 DELETE FROM orders_critical; 但還沒 COMMIT 。寫一句 ROLLBACK;,把資料倒帶回去。
⏱ 倒數中⋯記得 ROLLBACK 後檢查資料是否回來
執行救援
學備份基礎 →
Station 6 · 未雨綢繆
COMMIT 之後 怎麼辦?
ROLLBACK 只能救「還沒 COMMIT」的災難。如果已經 COMMIT 了,唯一的後悔藥就是備份 。
備份的核心概念:把整張表複印一份 ,存起來。出事的時候,從備份恢復。
1
最簡單的備份方式 ── 用 CREATE TABLE ... AS SELECT 把整張表複製出來:
CREATE TABLE menu_backup AS SELECT * FROM menu;
2
災難發生後(已經 COMMIT 無法 ROLLBACK),從備份還原:
DELETE FROM menu; ← 清掉壞掉的
INSERT INTO menu SELECT * FROM menu_backup; ← 從備份倒回來
3
真實世界裡,備份還會搭配 排程 (每天半夜自動跑)和 離站存放 (跨機房、跨雲端)── 但概念都是這個。
任務 :幫 menu 表建立一個叫 menu_backup 的備份。
提示:用 CREATE TABLE 新表名 AS SELECT * FROM 舊表名
執行
下班結算 →
Station 6 · 下班結算
你成為了救火隊員
會 SQL 的人多,會在災難中救資料的人少。 你已經是那個「關鍵時刻能被信任 」的人。
═══ 第五天結業報表 ═══
資料咖啡店 · 救援部
⏱ 累積學習 — 分鐘
✨ 新學的招式 BEGIN / COMMIT / ROLLBACK / 備份
🎖 累計徽章 —
🏆 累積 XP +0
🆘 帶走這份「災難應變 SOP」
做任何 UPDATE 或 DELETE 之前,先 BEGIN;
執行後先 SELECT 檢查結果,確認無誤再 COMMIT;
有疑慮就 ROLLBACK; ── 沒人會死、沒人會被開除
定期備份:CREATE TABLE x_backup AS SELECT * FROM x;
真實環境上線前,備份排程是必修 ,不是選修
下一站 🚪 走出沙盒
到目前為止,你都在瀏覽器裡的玩具資料庫上練習。 明天教你把真實的資料庫裝在你自己電腦 ,連線、操作、開始你的工程師之路。
前往站 7 →
↺ 重新開始
🚪
第六天 · 真實世界
「過去六天你都在我這個咖啡廳練習。 今天我要把你送出店門 ── 看看真實世界長什麼樣。」
推開店門 →
你打的每一句 SQL,到目前為止都跑在瀏覽器內建的小型資料庫 上。這叫做 SQLite ,雖然輕量但功能齊全。
但真實世界裡,網站、App、銀行系統用的是更大型的資料庫 ── MySQL 和 PostgreSQL 是兩大主流。
接下來,我帶你認識它們。
Station 7 · 三扇門
真實世界的三大資料庫
點擊下面任一張卡片,認識它的特性、優勢、適用場景。
📄
SQLite
「一個檔案就是一個資料庫」
不需要伺服器
整個資料庫就是一個 .db 檔
手機 App 內建幾乎都用它
學習門檻最低
適合誰: 個人專案、行動 App、嵌入式裝置、學習者。
限制: 不適合多人同時寫入的高流量網站。
你已經很熟了: 過去 6 站玩的就是 SQLite!
🐬
MySQL
「網站世界的常勝軍」
歷史悠久、社群龐大
WordPress、Facebook 都用過
性能好、擴充性強
免費版商用受 Oracle 條款限制
適合誰: 中小型網站、需要相容性、團隊已熟悉。
典型用途: 電商、論壇、CMS、會員系統。
替代品: MariaDB(MySQL 的開源分支,幾乎相容)。
🐘
PostgreSQL
「工程師最愛的資料庫」
功能最強、最遵守標準
支援 JSON、地理座標、全文搜尋
新創與資料工程界的首選
完全開源、無商業限制
適合誰: 新創、資料分析、需要進階功能的應用。
典型用途: SaaS、資料倉儲、地理資訊系統。
常見搭配: Supabase、Neon 提供雲端託管的 PostgreSQL。
Station 7 · 個人路徑
你想成為什麼樣的人 ?
資料庫是工具,重點是你想用它做什麼。挑一個最像你的方向:
⚙️
後端工程師
幫 App 跟網站做資料儲存、API、登入系統
📊
資料分析師
從一堆資料裡挖出商業洞察、做報表、寫 dashboard
🛡️
資料庫管理員
負責資料庫的效能、備份、安全、災難恢復
🧠
先學一陣子再決定
還沒方向,先把基本功練紮實再說
看推薦資源 →
Station 7 · 學習資源
繼續精進的下一步
這些是業界公認的優質資源 ── 不需要全部看完,挑一兩個深入即可。
📖 入門書
SQL 學習指南
O'Reilly 經典,把 SELECT/JOIN/索引講得很透徹。中文版也容易找到。
📖 進階書
Designing Data-Intensive Applications
「DDIA」── 後端工程師必讀。講分散式系統、資料一致性的聖經。
🎯 練習題庫
SQLZoo / LeetCode SQL
SQLZoo 適合溫故,LeetCode SQL 適合面試準備。每天 1-2 題,三個月會脫胎換骨。
🛠️ GUI 工具
DBeaver / TablePlus
圖形化操作,看資料、寫 query 都比命令列直觀。DBeaver 免費跨平台、TablePlus 介面更精緻。
☁️ 免費託管
Supabase / Neon
3 分鐘註冊就能拿到一個真實的 PostgreSQL 資料庫,免費額度足以做個人專案。
📺 YouTube
"Database Basics" by Hussein Nasser
講解資料庫底層運作的頻道,深入但不無聊。對「為什麼索引快」、「為什麼 transaction 重要」有興趣可看。
💡 阿明的個人建議
不要只「看」資源 ── 找一個真實的小專案 ,逼自己用 SQL 解決真實問題。
範例:把你自己的記帳記錄、看劇清單、跑步紀錄做成資料庫,每週用 SQL 撈報表給自己看。
做過一次「自己的」就會勝過讀十本書。
畢業典禮 →
Station 7 · 畢業典禮
你畢業 了 🎓
過去 6 天你打了無數句 SQL、救過資料、設計過自己的專案、
親眼看 JOIN 的光線連起兩張表 ── 你比 90% 的「會 SQL」的人都更紮實。
— DB Cafe · Certificate of Completion —
資料咖啡店 畢業證書
頒發給已完成全部 7 站的學員
✦ 你已掌握的技能 ✦
SELECT 查詢與欄位篩選
WHERE 條件過濾與多重邏輯
ORDER BY 排序、LIMIT 限制
LIKE 模糊搜尋
CREATE TABLE 與資料型別設計
INSERT 新增、UPDATE 修改、DELETE 刪除
主鍵(Primary Key)與 WHERE 精準鎖定
INNER JOIN 與 LEFT JOIN
外鍵概念與多表關聯
NULL 值與 IS NULL 查詢
BEGIN / COMMIT / ROLLBACK 交易
備份與災難救援基礎
由「資料咖啡店」店長頒發
— 阿明 ☕ —
完成日期:—
🚀 旅程從這裡開始
你已經有了真正的基本功 ── 接下來的路要靠你自己走。
記得:不要只看書,找個真實專案做做看 。三個月後再回來,你會笑出來。
📜 下載證書(文字檔)
↺ 從第一站再玩一次
🎁 彩蛋:繼續經營咖啡廳
學會了 SQL,現在試試真的開一間店 ── 服務客人賺咖啡幣、購買升級、看見店面成長。
每天還會有「老闆要求的查詢」考你 SQL ── 學以致用的時刻。
🏪 開始經營 →
🏪
歡迎來到「自己的咖啡廳」
「阿明退休了,這間店現在是你的 。
用你學的 SQL,看看能把它經營成什麼樣子。」
開門營業 →
規則很簡單:
☕ 客人會自己上門 。每位客人離開時付你 25 咖啡幣(升級之後會更多)。
📅 一天 3 分鐘 。每天結束時結算營收,第 N 天會有「老闆查詢」考你 SQL。
🛒 累積咖啡幣可以買升級 :第二台咖啡機、加桌子、小費罐⋯⋯一共 5 級。
畢業前學的 SQL 就是你的武器 ── 用來解決商業問題、賺更多幣、解鎖更多升級。
經營模式 · Day 1
店長的一天
可以走動、看著客人來來去去。HUD 在右上角追蹤營收。
完成「今日老闆查詢」可以拿額外獎金。
═══ 今日營業報表 ═══
☕ 服務客人 —
💰 今日營收 —
📋 老闆查詢 —
💎 累計咖啡幣 —
繼續下一天 →
回到主畫面
🏪
直接經營 · 邊學邊賺
「不想先上課?沒問題。 你邊做邊學 ,每解決一位客人的需求就賺一點錢。」
開門營業 →
規則簡單:
☕ 客人會自己上門 ,他們的需求需要用 SQL 回答
💡 每題都有提示 ,從最簡單的 SELECT * FROM ... 開始
❌ 答錯沒事 ,我會用人話告訴你哪裡錯了,可以重來
✅ 答對賺錢 ,累積咖啡幣可以買升級
準備好了嗎?第一位客人馬上就到~
直接經營 · 第 1 天
這位客人的需求
客人已離開(或這題太難?)
下一位客人 →
改去培訓