跳至主要內容
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 工具

TablePlusDBeaverpgAdmin 中填入:

  • 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 操作

延伸閱讀與資源


← 返回專題首頁