数据库系列6——增删改操作:数据库是如何被“安全写入”的
增删改不是语法问题,而是你是否对数据保持敬畏的问题。写得慢一点,想得清楚一点,永远比“写得快”更重要。安全查询数据的能力正确筛选与统计的能力组合复杂查询的能力对写操作保持敬畏的工程习惯绝大多数 AI Agent / 后端系统,对数据库能力的真实要求。事务与一致性索引与性能或直接把 SQL 融入你的 Agent / 自动化系统但无论走哪一步,这套数据库认知,都会是你的底座。
数据库系列6——增删改操作:数据库是如何被“安全写入”的
本文是【数据库工程系列】的最后一篇。
在前面的所有内容中,我们都在“读”和“算”数据。
数据库系列1:给 AI 工程师的 SQL 入门
简单查询:把数据“拿出来”(SELECT 基础能力一次讲透)
条件查询:把数据“筛对、排对”(WHERE/逻辑/范围/null/LIKE 一次讲透)
高级查询:排序 分页 聚合 分组 过滤一次讲透子查询:把查询拆成“中间结果”的工程思维
而这一篇,关注的是另一件更危险的事:你如何修改系统已经保存的事实。
0. 开篇:为什么增删改比查询危险得多
在数据库操作中,有一条非常重要、但常被忽略的分界线:
- 查询(SELECT)
只读,不改变数据,错了可以重来。 - 写操作(INSERT / UPDATE / DELETE)
一旦执行,数据立刻发生变化。
在工程视角下,写操作本质上是在做一件事:
修改系统已经保存的“事实”。
所以,增删改不是“会不会写”的问题,而是有没有风险意识的问题。
1. 数据插入(INSERT):数据是如何进入系统的
1.1 标准写法(工程中强烈推荐)
INSERT INTO student (id, username, password, age)
VALUES (1, 'jack', '123456', 18);
工程解释:
- 明确列名 = 明确写入意图
- 不依赖字段顺序,表结构变动风险更低
这是唯一推荐的写法。
1.2 省略列名的写法(为什么不推荐)
INSERT INTO student
VALUES (2, 'lucy', '666', 25);
常见错误:
- 强依赖表字段顺序
- 一旦新增字段,旧 SQL 可能直接写错数据
工程提示:
写操作不是“图省事”的地方。
1.3 插入多条记录(批量写入)
INSERT INTO student (id, username, password, age)
VALUES
(3, 'jerry', '888', 25),
(4, 'tom', '123', 22);
工程解释:
- 一条 SQL 写多行,比多次 INSERT 更安全
- 事务边界更清晰,性能也更好
1.4 NULL 的正确插入方式(必须理解)
INSERT INTO student (id, username, password, age)
VALUES (5, 'tom', NULL, 22);
常见错误:
-- ❌ 错误:这是字符串
VALUES (5, 'tom', 'null', 22);
工程提示:
NULL 表示“没有值”,不是字符串,也不是 0。
2. 数据修改(UPDATE):最容易误伤的操作
2.1 UPDATE 的标准结构
UPDATE student
SET username = 'lucy'
WHERE age = 18;
UPDATE 本身并不复杂,危险点在于:你改了多少行。
2.2 没有 WHERE 的 UPDATE,是事故级操作
-- ❌ 极度危险:整表修改
UPDATE student SET age = 0;
工程铁律(必须记住):
任何 UPDATE,没有 WHERE,默认作用于全表。
2.3 多字段更新示例
UPDATE student
SET username = 'jack', password = '8888'
WHERE age = 28;
工程提示:
- WHERE 条件尽量唯一
- 影响行数必须是“你预期的数量”
2.4 安全修改的工程习惯
在真实项目中,推荐遵循:
- 先 SELECT,再 UPDATE
- 确认命中的行数
- 再执行 UPDATE
-- 先确认范围
SELECT * FROM student WHERE age = 18;
-- 再执行修改
UPDATE student SET username = 'lucy' WHERE age = 18;
3. 数据删除(DELETE):不可逆操作
3.1 DELETE 的标准写法
DELETE FROM student
WHERE id = 6;
DELETE 和 UPDATE 一样,危险点不在语法,而在作用范围。
3.2 再强调一次:没有 WHERE 的 DELETE
-- ❌ 删除整张表的数据
DELETE FROM student;
工程提示:
DELETE 是不可逆操作。
3.3 工程中的“删除”原则
在真实系统中:
- 能不删就不删
- 常用做法是:
- 增加
is_deleted字段 - 用 UPDATE 标记删除(软删除)
- 增加
DELETE 更适合用于:
- 测试数据
- 临时表
- 明确可重建的数据
4. 增删改小结与安全模板
增删改安全模板(工程级)
-- 插入
INSERT INTO 表名 (列1, 列2, ...)
VALUES (值1, 值2, ...);
-- 修改(必须有 WHERE)
UPDATE 表名
SET 列1 = 值1, 列2 = 值2
WHERE 条件;
-- 删除(必须有 WHERE)
DELETE FROM 表名
WHERE 条件;
一句话总结
增删改不是语法问题,而是你是否对数据保持敬畏的问题。
写得慢一点,想得清楚一点,
永远比“写得快”更重要。
如果你完整走完了这个系列,你已经具备了:
- 安全查询数据的能力
- 正确筛选与统计的能力
- 组合复杂查询的能力
- 对写操作保持敬畏的工程习惯
这已经是:
绝大多数 AI Agent / 后端系统,对数据库能力的真实要求。
接下来,你可以选择继续深入:
- 事务与一致性
- 索引与性能
- 或直接把 SQL 融入你的 Agent / 自动化系统
但无论走哪一步,
这套数据库认知,都会是你的底座。
更多推荐


所有评论(0)