附錄:使用 Supabase 練習 PostgreSQL
不想在本機安裝 PostgreSQL?Supabase 提供免費的雲端 PostgreSQL 資料庫,是練習 SQL 指令的絕佳平台。
一、 什麼是 Supabase?
Supabase 是一個開源的 Firebase 替代方案,底層使用 PostgreSQL。它提供:
- 免費的 PostgreSQL 資料庫(500MB)
- 線上 SQL 編輯器
- 即時資料同步
- 身份驗證、儲存等功能
對於練習 PostgreSQL 來說,我們主要用它的 SQL Editor 功能。
二、 建立免費帳號
1. 註冊 Supabase
前往 supabase.com 並點擊 Start your project。
你可以使用 GitHub 帳號快速註冊。
2. 建立新專案
- 點擊 New project
- 選擇一個 Organization(沒有就建立一個)
- 填寫專案資訊:
- Name:隨意命名,例如
postgres-practice - Database Password:設定一個強密碼(之後連線會用到)
- Region:選擇離你最近的區域(例如 Singapore)
- Name:隨意命名,例如
- 點擊 Create new project
TIP
專案建立需要約 2 分鐘,請耐心等待。
三、 使用 SQL Editor
進入 SQL Editor
在左側選單中點擊 SQL Editor(圖示看起來像一個終端機)。
執行第一個查詢
在編輯器中輸入:
sql
SELECT version();點擊 Run 或按 Cmd + Enter(Mac)/ Ctrl + Enter(Windows),你會看到 PostgreSQL 的版本資訊。
建立練習用的表
sql
-- 建立 users 表
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 插入測試資料
INSERT INTO users (name, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com'),
('Charlie', 'charlie@example.com');
-- 查詢資料
SELECT * FROM users;四、 練習本系列的範例
練習 SELECT
sql
-- 條件查詢
SELECT * FROM users WHERE name LIKE 'A%';
-- 排序
SELECT * FROM users ORDER BY created_at DESC;練習 JOIN
sql
-- 建立 orders 表
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
product TEXT,
amount NUMERIC(10, 2),
created_at TIMESTAMPTZ DEFAULT NOW()
);
INSERT INTO orders (user_id, product, amount) VALUES
(1, 'iPhone', 999.00),
(1, 'AirPods', 199.00),
(2, 'MacBook', 1999.00);
-- LEFT JOIN 練習
SELECT u.name, o.product, o.amount
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;練習視窗函數
sql
-- 建立 sales 表
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
salesperson TEXT,
region TEXT,
amount NUMERIC(10, 2),
sale_date DATE
);
INSERT INTO sales (salesperson, region, amount, sale_date) VALUES
('Alice', 'North', 1000, '2024-01-15'),
('Alice', 'North', 1500, '2024-01-20'),
('Bob', 'South', 1200, '2024-01-18'),
('Charlie', 'South', 900, '2024-02-05');
-- ROW_NUMBER 練習
SELECT
salesperson,
amount,
ROW_NUMBER() OVER (ORDER BY amount DESC) AS rank
FROM sales;
-- 分組排名
SELECT
salesperson,
region,
amount,
RANK() OVER (PARTITION BY region ORDER BY amount DESC) AS region_rank
FROM sales;五、 查看 Table Editor
除了 SQL Editor,Supabase 還提供視覺化的 Table Editor:
- 在左側選單點擊 Table Editor
- 你會看到剛才建立的表
- 可以直接在表格中新增、編輯、刪除資料
這對於驗證 SQL 結果非常方便。
六、 使用外部工具連線
如果想用 psql 或其他工具連線,可以在 Project Settings → Database 中找到連線字串。
使用 psql 連線
bash
psql "postgresql://postgres:[YOUR-PASSWORD]@db.[YOUR-PROJECT-REF].supabase.co:5432/postgres"使用 GUI 工具
在 TablePlus、DBeaver 或 pgAdmin 中填入:
- Host:
db.[YOUR-PROJECT-REF].supabase.co - Port:
5432 - Database:
postgres - User:
postgres - Password: 建立專案時設定的密碼
七、 重置練習環境
如果想清空所有資料重新開始:
sql
-- 刪除所有表(小心使用!)
DROP TABLE IF EXISTS orders CASCADE;
DROP TABLE IF EXISTS sales CASCADE;
DROP TABLE IF EXISTS users CASCADE;
-- 重新建立表格...或者直接刪除整個專案,再建立一個新的(免費帳號可以有 2 個專案)。
八、 Supabase 免費方案限制
| 項目 | 免費方案 |
|---|---|
| 專案數量 | 2 個 |
| 資料庫容量 | 500 MB |
| 每月頻寬 | 5 GB |
| 暫停機制 | 7 天沒活動會暫停(可手動恢復) |
對於練習 PostgreSQL 來說,這些限制綽綽有餘。
WARNING
7 天沒使用的專案會自動暫停,進入 Dashboard 點擊 Restore project 即可恢復。
九、 其他練習平台
如果你想嘗試其他平台:
| 平台 | 特點 |
|---|---|
| Neon | 免費 PostgreSQL,支援 Serverless |
| ElephantSQL | 免費 20MB PostgreSQL |
| Railway | 免費額度的雲端 PostgreSQL |
| db-fiddle.com | 線上 SQL 沙盒,無需註冊 |
總結
- 註冊 Supabase → 免費、不需信用卡
- 建立專案 → 等待約 2 分鐘
- 開啟 SQL Editor → 開始練習本系列的所有指令
- 查看 Table Editor → 視覺化驗證結果
現在你有了一個完全免費的 PostgreSQL 練習環境,可以跟著本系列的所有章節動手實作!
進階挑戰
- 在 Supabase 中建立一個完整的電商資料庫(users、products、orders、order_items)
- 使用 Supabase 提供的 RLS(Row Level Security)功能,實作多租戶資料隔離
- 透過 psql 連線 Supabase,執行
\dt和\d tablename來熟悉 psql 操作