数据增删改查:CRUD 四类基础操作


文档摘要

数据增删改查:CRUD 四类基础操作 增删改查(Create / Read / Update / Delete,简称 CRUD)是与数据打交道最基础的四类操作,对应 SQL 的 INSERT、SELECT、UPDATE、DELETE。本节用通俗的语言讲清楚它们的写法与要点。 插入数据(INSERT) INSERT 用于向表中添加新行。其基本结构是「指明要插入的列,再给出对应的值」。 几个常用技巧: 省略有默认值的列:如果某列有默认值(如 自动生成、 默认当前时间),插入时可以不写它,数据库会自动填充。 批量插入:一条 INSERT 可以一次插入多行,用逗号分隔多组 VALUES,比循环单条插入高效得多。 返回插入结果:可用 让插入语句返回刚插入的完整行,方便拿到自动生成的主键。

数据增删改查:CRUD 四类基础操作

增删改查(Create / Read / Update / Delete,简称 CRUD)是与数据打交道最基础的四类操作,对应 SQL 的 INSERT、SELECT、UPDATE、DELETE。本节用通俗的语言讲清楚它们的写法与要点。

插入数据(INSERT)

INSERT 用于向表中添加新行。其基本结构是「指明要插入的列,再给出对应的值」。

INSERT INTO users (id, email, name) VALUES ('一个UUID', 'someone@example.com', '张三');

几个常用技巧:

  • 省略有默认值的列:如果某列有默认值(如 id 自动生成、created_at 默认当前时间),插入时可以不写它,数据库会自动填充。
  • 批量插入:一条 INSERT 可以一次插入多行,用逗号分隔多组 VALUES,比循环单条插入高效得多。
  • 返回插入结果:可用 RETURNING * 让插入语句返回刚插入的完整行,方便拿到自动生成的主键。
INSERT INTO users (email, name) VALUES ('a@example.com', '甲'), ('b@example.com', '乙') RETURNING id, email;

查询数据(SELECT)

SELECT 是 SQL 中使用频率最高的语句,用于从表中读取数据。

SELECT id, email, name FROM users;

要点:

  • 选择列:用 * 表示所有列;但在生产中建议显式列出所需列,既清晰又能减少传输量。
  • 限制行数:用 LIMIT 限制返回行数,避免一次性拉取全表。
  • 去重:用 DISTINCT 去除重复行。

复杂的过滤、排序、分页将在下一节展开,本节先建立基本骨架。

更新数据(UPDATE)

UPDATE 用于修改已存在的行,结构是「更新哪张表、设置哪些列、满足什么条件」。

UPDATE users SET name = '李四', updated_at = now() WHERE id = '某个UUID';

最重要的安全原则:永远不要忘了 WHERE 子句。如果不加条件,UPDATE 会更新全表的所有行——这是一个极常见且危险的操作失误。同样,UPDATE 也支持 RETURNING 返回更新后的行。

经验法则:写 UPDATE / DELETE 时,先写 WHERE 条件,再写要更新的内容,养成习惯可避免误伤全表。

删除数据(DELETE)

DELETE 用于删除行,同样依赖 WHERE 子句限定范围。

DELETE FROM orders WHERE status = 'cancelled' AND created_at < '某日期';

与 UPDATE 一样,没有 WHERE 的 DELETE 会清空整张表,务必谨慎。在生产环境中,对重要数据的删除常采用「软删除」——增加一个 deleted_at 时间戳字段标记删除,而非真正物理删除,以便恢复与审计。

CRUD 的通用注意事项

  • 事务保护:当多个写操作必须同时成功或同时失败时(如扣库存 + 生成订单),要把它们放进一个事务,出错时回滚。PostgreSQL 默认在事务中执行,需显式提交或回滚。
  • 约束拦截:第 2 章介绍的主键、外键、唯一、非空、检查约束,会在写入或更新时自动校验。违反约束的操作会被数据库拒绝,并返回明确的错误。
  • 谨慎的批量操作:大批量更新或删除可能长时间锁表,影响并发,应分批进行。

在 Supabase 中执行 CRUD 的途径

在 Supabase 项目里,执行 CRUD 有多种途径,它们最终都转化为 SQL:

  • 客户端库:用面向对象的方式表达查询(如「从某表查询、筛选某条件」),客户端库自动生成参数化 SQL 并通过 API 执行,适合前端直接调用,并受 RLS 保护。
  • 控制台 SQL 编辑器:直接在网页控制台编写并运行原生 SQL,适合调试、一次性操作与数据探查。
  • 边缘函数:在可信后端环境中用服务级密钥执行原生 SQL,适合需要绕过 RLS 或编排复杂逻辑的场景。

无论哪种途径,理解 SQL 本身的语义,都是正确使用它们的前提。

小结

INSERT 写入、SELECT 读取、UPDATE 修改、DELETE 删除,构成数据操作的基石。掌握这四类语句,再配合约束与事务,你就能安全地维护数据库中的数据。下一节将进一步丰富 SELECT,学习过滤、排序与分页,让它能服务于真实的列表与搜索需求。


发布者: 作者: 灏天文库 转发
评论区 (0)
U