DB Cafe
(Ho Dao College)
經營咖啡店.學習數據庫知識
⏳ 載入資料庫引擎…
🛒 升級店面
50
-->
Station 1 · 第一站

為什麼世界需要資料庫?

先別急著學咒語。我們花 60 秒,搞清楚這東西到底為什麼存在。

📷 IG
小美 · 10 min
阿傑 · 32 min
阿明 · 1 hr
小華 · 2 hr
💬 LINE
媽媽 · 早安貼圖
老闆 · 加班通知
同事 · 午餐?
小美 · 在嗎?
🛒 蝦皮
藍牙耳機 $1,290
咖啡豆 $580
運動襪 $199
護手霜 $320

你滑的每個畫面,都是資料庫在後台說話。
不是檔案、不是 Excel ── 是更聰明的東西。

Station 1 · 直覺測驗

看到這張表,你猜這是哪個 App?

資料庫工程師看一眼資料表,就能猜到背後的功能。試試看 ──

📊 mystery_table
user_idvideo_idwatch_secondsliked
1042v_aB347true
1042v_xY93false
1042v_kP2120true
2871v_aB392true
📷Instagram
▶️YouTube
💬LINE

歡迎來到「資料咖啡店」

店長阿明在等你。今天起,你就是這裡的新員工。

Station 2 · 第一天上班

這台筆電裡,有兩疊「卡片」

👨‍🍳
阿明
我們店裡所有東西都記在這台電腦的「資料庫」裡。資料庫不是什麼神祕的東西 ── 就是一堆表格而已,跟 Excel 很像。
Table
menu
id
name
category
price
飲料品項 · 12 筆
Table
orders
order_id
customer
drink_id
total
今日訂單 · 18 筆
👨‍🍳
阿明
左邊 menu 記飲料,右邊 orders 記訂單。簡單吧?
Station 2 · 你的第一句咒語
🧑
客人
你們今天有什麼飲料?
👨‍🍳
阿明
糟糕,我忘記菜單了!快 ── 用電腦查資料庫!
1
想看 menu 表的全部資料,要打這句咒語:
SELECT * FROM menu;
2
拆開來看其實超直白:
SELECT = 我要看  * = 全部欄位  FROM menu = 從 menu 這張表
3
最後加分號 ; 代表「我講完了」。在下面打打看~
database.sql
提示:忘記分號沒關係,我會幫你補上 ☕
Station 2 · 挑剔的客人
👩
客人
我只想看飲料 名稱跟價格,其他不用。
👨‍🍳
阿明
全部欄位太多了。把 * 換成欄位名就行:SELECT name, price FROM menu;
menu 表的欄位idnamecategoryprice
database.sql
小提示:欄位之間用逗號 , 分開
Station 2 · 換一張表
👨‍🍳
阿明
同樣的咒語,可以用在不同的表上。試試看 orders 這張:客人問今天有幾筆訂單,他只要看訂單編號金額
orders 表的欄位order_idcustomerdrink_idtotal
database.sql
提示:把 menu 換成 orders
Station 2 · 點餐員模擬器

三位客人同時上門

點選下方任一位客人,看他要什麼,然後寫 SQL 回答。

完成 0 / 3
👨
「menu 表全部給我看一下。」
👵
「我只想知道你們有哪些
飲料的名字。」
🧑‍🦱
「orders 表給我看 customer 跟 total 兩欄就好。」
Station 2 · 下班結算

你完成了第一天

才 8 分鐘,你已經會讀資料庫了。

═══ 第一天結業報表 ═══
資料咖啡店 · 兼職員工
⏱ 完成時間8 分鐘
✨ 學會的咒語SELECT
🎖 解鎖徽章3
🏆 累積 XP+0

下一站 🔍 找到你要的東西

明天教你怎麼從一堆資料裡「只挑出特定的」── 例如:
找出價格大於 100 元的飲料、上週賣最好的前三名…

🔍

第二天 · 偵探日

「昨天教你『看』資料,今天教你『找』資料。
準備好戴上偵探帽了嗎?」

👨‍🍳
阿明
昨天 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 的所有商品。
database.sql
提示:小於是 < 大於是 > 等於是 =
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 之間(含)的商品。
database.sql
提示:三個條件用兩個 AND 串起來
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 名
database.sql
提示:DESC 表示由大到小,LIMIT 3 取前三筆
Station 3 · 第四招:模糊搜尋

客人記不得完整名字

🧑‍🦱
客人
那個⋯什麼「拿鐵」的飲料你們都有嗎?我忘記叫什麼了。
👨‍🍳
阿明
他不記得完整名字,只知道「含拿鐵」。這時候 = 就不夠用了 ── 用 LIKE + 萬用字元 %
1
% 代表「任何字、任何長度」(包含空字串):
name LIKE '%拿鐵%' 名字裡有「拿鐵」就符合(拿鐵、抹茶拿鐵都中)
2
'拿鐵%' ── 開頭是「拿鐵」
'%拿鐵' ── 結尾是「拿鐵」
'%拿鐵%' ── 任何位置含「拿鐵」
任務:找出 menu 裡 名字含「拿鐵」 的所有飲料。
database.sql
提示:% 放在「拿鐵」前後
Station 3 · 三件懸案

資料偵探實戰

點選任一案件、寫 SQL 破解。三件全破就拿「資料偵探」徽章 🔎

破案進度 0 / 3
🕵️
案件 1
找出 orders 裡 金額大於 130 的所有訂單。
🔍
案件 2
menu 的「甜點」類別裡,最便宜的前 2 名是哪些?
🔎
案件 3
orders 裡 customer 名字含「小」的所有訂單。
Station 3 · 下班結算

你已經是偵探

能在一萬筆資料裡,精準撈出你要的那幾筆。

═══ 第二天結業報表 ═══
資料咖啡店 · 偵探實習生
⏱ 累積學習— 分鐘
✨ 新學的招式WHERE / ORDER BY / LIKE
🎖 累計徽章
🏆 累積 XP+0

下一站 🏗️ 當建築師

明天你要從「使用別人的資料庫」進化到
「設計自己的資料庫」 ── 建立你自己的個人專案資料表!

🏗️

第三天 · 建築師

「前兩天你都在『查』別人的資料。
今天,我們要從零開始蓋一張屬於你自己的表。」

👨‍🍳
阿明
你會學到 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 型別,
  ...
);
database.sql
提示:欄位之間用逗號分開、最後一個欄位後面不用逗號
Station 4 · 第二步:INSERT

你的資料搬進去

👨‍🍳
阿明
表格已經蓋好但還是空的。現在放你真實的資料進去 ── 這張表會記錄你接下來的所有操作。
1
INSERT 的兩種寫法:
INSERT INTO 表名 (欄位1, 欄位2) VALUES (值1, 值2);
INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);
2
文字一定要加單引號 '...',數字不用。
主鍵(id)通常省略不填,資料庫會自動編號。
database.sql
填入你第 1 筆真實資料
已新增筆數: 0 / 3
你目前的資料:
(還沒有資料 ── 寫一句 INSERT 試試)
Station 4 · 第三步:UPDATE(小心⚠)

改資料 ── 但有個致命陷阱

👨‍🍳
阿明
想改資料?基本語法很簡單:
UPDATE 表名 SET 欄位 = 新值 WHERE 條件;

但 ── 如果你忘記寫 WHERE,會發生什麼事? 我們先做個實驗。
⚠ 危險實驗
下面的編輯器已經幫你寫好了一句沒有 WHERE 的 UPDATE。先按執行,看看會發生什麼。
database.sql
⚠ 這句沒有 WHERE
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; ← 再刪除
database.sql
提示:刪除 id = 2 的那一筆
你目前的資料:
(讀取中⋯)
Station 4 · 下班結算

你蓋了第一棟房子

而且你不只會查資料 ── 你能設計、新增、修改、刪除。
這是真正的「資料庫工程師」基本功。

═══ 第三天結業報表 ═══
資料咖啡店 · 見習建築師
⏱ 累積學習— 分鐘
🏗 你的個人專案
✨ 新學的指令CREATE / INSERT / UPDATE / DELETE
🎖 累計徽章
🏆 累積 XP+0

📦 下載你的個人資料庫

把你建立的這張表匯出成 .sql 檔,未來可以匯入任何資料庫繼續使用。

下一站 🤝 資料的人際關係

明天你要學 SQL 最重要、也最讓新手頭痛的招式:
JOIN ── 把多張表連起來看。我們會用動畫慢動作演示給你看。

🤝

第四天 · JOIN 動畫劇場

「今天要學 SQL 最重要的招式 ── 把多張表連起來
我會用慢動作演示給你看。」

👨‍🍳
阿明
到目前為止你都只看一張表 ── menu 或 orders 或自己建的表。但真實世界裡,資料庫常有 數十、上百張表,問題的答案常常分散在好幾張表之間。

今天先從一個血淋淋的反面教材開始,看看「不用 JOIN」會發生什麼災難。
Station 5 · 為什麼一張表不夠

所有東西塞進一張表的災難

👨‍🍳
阿明
想像我們把會員的所有資訊(等級、加入日期)通通塞進 orders 表,會變這樣:
😱 fat_orders(反面教材)
order_id customer level joined drink total
1001小美VIP2024-01-15拿鐵120
1009小美VIP2024-01-15抹茶拿鐵140
1017小美VIP2024-01-15司康70
看到問題了嗎?
  • 小美下了 3 次單,她的等級和加入日期就重複寫了 3 次 ── 浪費空間
  • 如果小美要把名字改成「小美美」,要改所有相關列,漏改一筆就資料不一致
  • 路人甲還沒下過單,根本進不了這張表,他的會員資料就消失了
👨‍🍳
阿明
正確做法是把資料分開放:會員資訊一張表、訂單資訊一張表,需要的時候再用 JOIN 把它們連起來。
Station 5 · 兩張表的秘密橋樑

外鍵把兩張表牽起來

👨‍🍳
阿明
我已經幫你建好新的 customers 表了。它跟 orders 表透過客人名字互相對應。
customers
idnamelevel
1小美VIP
2阿傑常客
9路人甲一般
…共 9 位
orders
order_idcustomertotal
1001小美120
1002阿傑130
1009小美140
…共 18 筆
橋樑在哪? customers 表的 name ↔ orders 表的 customer,兩個欄位的值是同一個東西,這就是「外鍵」的概念。
👨‍🍳
阿明
想看「每張訂單背後的會員等級是什麼」?單看 orders 表答不出來、單看 customers 表也答不出來 ── 必須把兩張表連起來。下一步教你怎麼做。
Station 5 · 動畫劇場 · INNER JOIN

看 JOIN 怎麼表演給你看

下面是兩張迷你表(為了動畫好看,只取 4 筆資料)。按「執行 JOIN」看它怎麼運作 ──

準備就緒。按下方按鈕開演 ↓
customers (左)
idnamelevel
1小美VIP
2阿傑常客
3阿明常客
9路人甲一般
orders (右)
order_idcustomertotal
1001小美120
1002阿傑130
1003阿明100
1009小美140
Station 5 · 動畫劇場 · LEFT JOIN

不想漏掉任何人怎麼辦?

👨‍🍳
阿明
老闆問:「我們有哪些會員從來沒下過單?」
INNER JOIN 會把這些人排除掉,因為他們在 orders 表沒紀錄 ── 但這正是我們要找的人!

LEFT JOIN 救援登場:左邊那張表的每一列都保留,右邊沒對應的就用 NULL 補上。
注意觀察:路人甲(左邊有、右邊無)這次會發生什麼?
customers (左 ★)
idnamelevel
1小美VIP
2阿傑常客
3阿明常客
9路人甲一般
orders (右)
order_idcustomertotal
1001小美120
1002阿傑130
1003阿明100
1009小美140
Station 5 · 業務查詢實戰

老闆會問你的三個問題

用你剛學會的 JOIN 解決真實業務問題。三題全破拿「連連看大師」徽章 🔗

完成 0 / 3
👔
業務 1
列出每筆訂單的 客人名字、等級、訂單金額
📊
業務 2
只列出「VIP」等級的客人下過的所有訂單,包含 customer、total。
🕵️
業務 3
找出從來沒下過單的會員 name。
Station 5 · 下班結算

你掌握了 SQL 的核心招式

JOIN 是分水嶺 ── 會 JOIN 的人才能應付真實世界的資料庫工作。

═══ 第四天結業報表 ═══
資料咖啡店 · 連結大師
⏱ 累積學習— 分鐘
✨ 新學的招式INNER JOIN / LEFT JOIN
🎖 累計徽章
🏆 累積 XP+0

下一站 🛡️ 危險動作與後悔藥

還記得站 4 你經歷過的那場「沒有 WHERE 的災難」嗎?
明天你會學到怎麼用 Transaction 把資料救回來。

🛡️

第五天 · 後悔藥的藝術

「還記得站 4 你親眼目睹的那場災難嗎?
今天,我教你怎麼把災難倒帶。」

👨‍🍳
阿明
工程師世界有句話:「不是會不會出事,是何時出事」。

所有人都會打錯 SQL,差別只在於 ── 老手會在打錯之前就把所有危險操作放進「後悔藥包裝」。

這個包裝叫 Transaction
Station 6 · 三個救命關鍵字

把它想成文書處理的 Ctrl+Z

👨‍🍳
阿明
你寫文件時,按錯字會用 Ctrl+Z 還原;按 Ctrl+S 儲存才算數。
Transaction 就是把這個概念搬到資料庫
📝
BEGIN
「我要開始改了,
先別寫進磁碟」
✍️
COMMIT
「都看過了沒問題,
正式存檔
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;
database.sql
提示:四行都要寫,每行結尾要分號
Station 6 · ⚠ 限時救援

災難現場 · 救火行動

🚨
系統警報
新手工程師剛剛沒寫 WHERE 就 DELETE
orders_critical 表的訂單全沒了
所幸他剛剛還沒 COMMIT。

你的任務:在 90 秒內 ROLLBACK 救回所有訂單。
剩餘時間:
01:30
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 的備份。
database.sql
提示:用 CREATE TABLE 新表名 AS SELECT * FROM 舊表名
Station 6 · 下班結算

你成為了救火隊員

會 SQL 的人多,會在災難中救資料的人少。
你已經是那個「關鍵時刻能被信任」的人。

═══ 第五天結業報表 ═══
資料咖啡店 · 救援部
⏱ 累積學習— 分鐘
✨ 新學的招式BEGIN / COMMIT / ROLLBACK / 備份
🎖 累計徽章
🏆 累積 XP+0

🆘 帶走這份「災難應變 SOP」

  • 做任何 UPDATEDELETE 之前,先 BEGIN;
  • 執行後先 SELECT 檢查結果,確認無誤再 COMMIT;
  • 有疑慮就 ROLLBACK; ── 沒人會死、沒人會被開除
  • 定期備份:CREATE TABLE x_backup AS SELECT * FROM x;
  • 真實環境上線前,備份排程是必修,不是選修

下一站 🚪 走出沙盒

到目前為止,你都在瀏覽器裡的玩具資料庫上練習。
明天教你把真實的資料庫裝在你自己電腦,連線、操作、開始你的工程師之路。

🚪

第六天 · 真實世界

「過去六天你都在我這個咖啡廳練習。
今天我要把你送出店門 ── 看看真實世界長什麼樣。」

👨‍🍳
阿明
你打的每一句 SQL,到目前為止都跑在瀏覽器內建的小型資料庫上。這叫做 SQLite,雖然輕量但功能齊全。

但真實世界裡,網站、App、銀行系統用的是更大型的資料庫 ── MySQLPostgreSQL 是兩大主流。

接下來,我帶你認識它們。
Station 7 · 三扇門

真實世界的三大資料庫

點擊下面任一張卡片,認識它的特性、優勢、適用場景。

📄
SQLite
「一個檔案就是一個資料庫」
  • 不需要伺服器
  • 整個資料庫就是一個 .db 檔
  • 手機 App 內建幾乎都用它
  • 學習門檻最低
🐬
MySQL
「網站世界的常勝軍」
  • 歷史悠久、社群龐大
  • WordPress、Facebook 都用過
  • 性能好、擴充性強
  • 免費版商用受 Oracle 條款限制
🐘
PostgreSQL
「工程師最愛的資料庫」
  • 功能最強、最遵守標準
  • 支援 JSON、地理座標、全文搜尋
  • 新創與資料工程界的首選
  • 完全開源、無商業限制
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 交易
  • 備份與災難救援基礎
0
累積 XP
0
解鎖徽章
1
最終等級
由「資料咖啡店」店長頒發
— 阿明 ☕ —
完成日期:

🚀 旅程從這裡開始

你已經有了真正的基本功 ── 接下來的路要靠你自己走。
記得:不要只看書,找個真實專案做做看。三個月後再回來,你會笑出來。

🎁 彩蛋:繼續經營咖啡廳

學會了 SQL,現在試試真的開一間店 ── 服務客人賺咖啡幣、購買升級、看見店面成長。
每天還會有「老闆要求的查詢」考你 SQL ── 學以致用的時刻。

🏪

歡迎來到「自己的咖啡廳」

「阿明退休了,這間店現在是你的
用你學的 SQL,看看能把它經營成什麼樣子。」

👨‍🍳
阿明
規則很簡單:
客人會自己上門。每位客人離開時付你 25 咖啡幣(升級之後會更多)。
📅 一天 3 分鐘。每天結束時結算營收,第 N 天會有「老闆查詢」考你 SQL。
🛒 累積咖啡幣可以買升級:第二台咖啡機、加桌子、小費罐⋯⋯一共 5 級。

畢業前學的 SQL 就是你的武器 ── 用來解決商業問題、賺更多幣、解鎖更多升級。
經營模式 · Day 1

店長的一天

可以走動、看著客人來來去去。HUD 在右上角追蹤營收。
完成「今日老闆查詢」可以拿額外獎金。

營業結算

1 天結束

═══ 今日營業報表 ═══
☕ 服務客人
💰 今日營收
📋 老闆查詢
💎 累計咖啡幣
🏪

直接經營 · 邊學邊賺

「不想先上課?沒問題。
邊做邊學,每解決一位客人的需求就賺一點錢。」

👨‍🍳
阿明
規則簡單:
客人會自己上門,他們的需求需要用 SQL 回答
💡 每題都有提示,從最簡單的 SELECT * FROM ... 開始
答錯沒事,我會用人話告訴你哪裡錯了,可以重來
答對賺錢,累積咖啡幣可以買升級

準備好了嗎?第一位客人馬上就到~
直接經營 · 第 1

這位客人的需求

🧑
客人
等待客人上門⋯
徽章解鎖
🏆

徽章名稱

徽章描述

+30 XP