4. 增删改:INSERT / UPDATE / DELETE
这是什么:CRUD = 数据库增删改查四件套,本章管前三件:INSERT 插数据、UPDATE 改数据、DELETE 删数据,都是 SQL 语句。
为什么用:表建好了只是空壳子,真正干活的是往里塞数据、修正错误、清理垃圾。不会这三句,网站连「注册一个用户」都做不到。
如何用:本章拿 user 表逐条练 INSERT、UPDATE、DELETE,重点看清 WHERE 在改删时的保命作用。
4.1 INSERT:插入数据
INSERT INTO `user` (`username`, `email`, `age`)
VALUES ('frog', 'frog@example.com', 11),
('panda', 'panda@example.com', 9);
你会看到:
Query OK, 2 rows affected
要点:
- 列清单必须写(
username, email, age),不依赖列顺序,id 由自增填 - 一次可插入多行,行间用逗号
- 插入后用
SELECT * FROM user;(下一章详讲)确认
4.2 UPDATE:修改数据
UPDATE `user`
SET `email` = 'newfrog@example.com'
WHERE `username` = 'frog';
WHERE 是 UPDATE 的保险栓:没有它,全表所有行的 email 都会被改掉(线上事故大热门)。
-- 常见套路:按主键改(最精准)
UPDATE `user` SET `age` = 12 WHERE `id` = 1;
-- 一次改多列
UPDATE `user`
SET `age` = age + 1, `nickname` = '老蛙'
WHERE `email` LIKE '%@example.com';
4.3 DELETE:删除数据
DELETE FROM `user` WHERE `id` = 2; -- 删指定行
同样,绝不允许不带 WHERE 的 DELETE。练习阶段可以试一把悲副作用:
DELETE FROM `user`; -- 全表清空!
你会看到:Query OK, x rows affected,再 SELECT 就空了——记住这个教训。
删除数据两种模式:物理删除(DELETE,数据没了)和逻辑删除(加一列
is_deleted,改标志位)。业务上更爱逻辑删除,出事可恢复。
4.4 保命三招
- UPDATE / DELETE 前先 SELECT:把 WHERE 原样放到 SELECT 里看一眼,确认影响范围
- 主键来定位:改删尽量用
WHERE id = ?,别用模糊条件 - 先在练习库练:
learn库随便折腾
4.5 动手改
- 在
user表插入你自己的信息,再SELECT查看 - 把你的年龄 UPDATE 改大 1 岁(用
age + 1) - 加列
is_deleted BOOLEAN DEFAULT 0,练习「逻辑删除」你自己那行的标志位
4.6 小结
- INSERT 写列清单 + VALUES,多行逗号分隔
- UPDATE / DELETE 必须带 WHERE,操作前先 SELECT 确认
- 业务里优先「逻辑删除」代替物理 DELETE
下一章:查询基础:SELECT 与 WHERE 🐸