六维教程

Supabase 数据建模入门

这一篇学习数据建模的基础概念,并在 SQL Editor 里创建教程的第一张表。后续所有操作都在这张表上进行。

表、行、列

Supabase 的底层是 PostgreSQL,一个成熟的关系型数据库。理解数据模型,先理解三个概念

概念 类比 Excel 说明
表(Table) 一个 Sheet 存放同一类数据的集合
行(Row) Sheet 里的一行 一条完整的数据记录
列(Column) Sheet 里的一列 数据的一个属性字段

例如用户资料表,每一行是一个用户,每一列是这个用户的一个属性,比如昵称、年龄、注册时间。

数据类型

给列选择正确的类型,是数据建模的第一步。常用类型如下

类型 用途 示例值
text 任意长度的文本 张三
integer 整数 18
boolean 真假值 true
timestamptz 带时区的时间戳 2026-08-15 10:00:00+00
uuid 全局唯一标识,认证用户 ID 的标准类型 一串 36 位字符
numeric 带小数的数字 9.99

PostgreSQL 类型比 MySQL 更丰富,入门阶段掌握上面这些就够用。

主键

主键(Primary Key)是每行数据的唯一身份证。主键列的值在整张表中不允许重复,数据库靠它区分每一行。Supabase 官方推荐使用 uuid 类型,配合 generated always as identity 自动生成。

创建 profiles 表

打开 SQL Editor,输入以下语句并运行

create table public.profiles (
  id uuid primary key,
  username text,
  age integer,
  is_vip boolean default false,
  created_at timestamptz default now()
);
类型 说明
id uuid 主键 每个用户的唯一标识
username text 用户昵称
age integer 年龄,可空
is_vip boolean 是否会员,默认 false
created_at timestamptz 创建时间,默认当前时间

这里先不填 id 的默认值,第六篇学到认证后,会用真实用户 ID 填入。运行成功后,到 Table Editor 里就能看到这张空表。

插入测试数据

为了让后续教程有数据可查,用 SQL 插入两条测试记录

insert into profiles (id, username, age, is_vip)
values
  ('11111111-1111-1111-1111-111111111111', '小明', 18, true),
  ('22222222-2222-2222-2222-222222222222', '小红', 20, false);

id 里的数字只是测试用的占位符,真实场景会替换成用户的真实 ID。

两种建表方式

Supabase 提供两种建表入口

方式 入口 特点
Table Editor 可视化界面点选 新手友好,但默认开启行级安全策略
SQL Editor 写 SQL 语句 灵活可控,默认不开启行级安全策略

如果你用 Table Editor 建表后发现查询结果为空,多半就是行级安全策略在拦截,这是新手最容易困惑的坑,第八篇会详细讲。

其他操作

  • 修改表结构,用 alter table 语句添加或删除列
  • 删除表,用 drop table profiles 语句,操作前务必确认
  • 修改列名,用 rename 关键字

数据建模是后面所有功能的地基。接下来进入最常用的操作,第四篇学习用前端代码读取数据库。

下一篇 Supabase 数据查询入门

上一篇
Supabase 环境搭建
下一篇
Supabase 数据查询入门