跳至主要內容
Skip to content

附錄:使用 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. 建立新專案 ​

  1. 點擊 New project
  2. 選擇一個 Organization(沒有就建立一個)
  3. 填寫專案資訊:
    • Name:隨意命名,例如 postgres-practice
    • Database Password:設定一個強密碼(之後連線會用到)
    • Region:選擇離你最近的區域(例如 Singapore)
  4. 點擊 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:

  1. 在左側選單點擊 Table Editor
  2. 你會看到剛才建立的表
  3. 可以直接在表格中新增、編輯、刪除資料

這對於驗證 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 沙盒,無需註冊

總結 ​

  1. 註冊 Supabase → 免費、不需信用卡
  2. 建立專案 → 等待約 2 分鐘
  3. 開啟 SQL Editor → 開始練習本系列的所有指令
  4. 查看 Table Editor → 視覺化驗證結果

現在你有了一個完全免費的 PostgreSQL 練習環境,可以跟著本系列的所有章節動手實作!


進階挑戰 ​

  1. 在 Supabase 中建立一個完整的電商資料庫(users、products、orders、order_items)
  2. 使用 Supabase 提供的 RLS(Row Level Security)功能,實作多租戶資料隔離
  3. 透過 psql 連線 Supabase,執行 \dt 和 \d tablename 來熟悉 psql 操作

延伸閱讀與資源 ​


← 返回專題首頁