第2章 · 数据的写入与修改
本章要回答的三个问题:把数据灌进表里有哪几种写法、各适合什么场景?为什么说 UPDATE 和 DELETE 是 SQL 里威力最大也最容易闯祸的两个动词?误改误删之后,除了跑路还有没有技术手段自救?答案是:INSERT 四式按场景选用,UPDATE 与 DELETE 的安全全靠"先查后改"的纪律,而事务则是最后一道后悔药。
为什么会有这一章
第 1 章结束时练习场只有空表——查询能力的阶梯再高,没有数据也是空转。写入与修改是 DML 家族的本职,也是你第一次真正"动"数据:SELECT 写错了顶多白跑,UPDATE 少写一个 WHERE 则可能把整张表刷成同一个值。真实事故复盘里,"忘了写 WHERE 的 UPDATE"和"测试库生产库连错了的 DELETE"常年霸榜。所以本章除了讲语法,更要把安全纪律刻进肌肉记忆:任何写操作之前,先把 WHERE 条件放进 SELECT 里跑一遍,确认命中的行就是你想动的行。
本章结束时会顺带点燃第 9 章的引线:事务可以把一批改动"先挂起、后落盘",这条后悔药本章先用一小口,完整剂量在第 9 章。
读完能解决什么
- 面对单行、多行、从别的表搬运、不存在则插入四种需求,分别选出正确的 INSERT 写法;
- 解释为什么 INSERT 不写列名列表是坏习惯,批量 INSERT 为什么比逐行快一个量级;
- 执行带 WHERE 的 UPDATE 与 DELETE 前,用同条件 SELECT 预演受影响的行;
- 说清 DELETE、TRUNCATE、DROP 的三档破坏力差别与各自的可恢复性;
- 在误操作后的第一时间用事务回滚自救,并知道什么情况下后悔药失效。
各节怎么分工
| 节 |
回答哪个问题 |
关键产出 |
| 2.1 INSERT 的四种姿势 |
数据怎么进来 |
单行、多行、INSERT SELECT、UPSERT 的完整会话与选型 |
| 2.2 UPDATE 与 DELETE 安全操作 |
改和删怎么不闯祸 |
先查后改流程、三档删除对照、事务自救演示 |
先决条件
- 完成第 1 章:books 与 categories 表已建好,能连库执行语句;
- 理解 1.2 节的 DML 与 TCL 家族划分——本章末尾的事务自救是 TCL 的第一次实战。
本章知识点清单
- 能写出带列名列表的 INSERT,并说明省略列名列表的风险;
- 能解释一条多值 INSERT 的语法结构,以及"一次插一百行"与"一百次插一行"的性能差来源;
- 能用 INSERT ... SELECT 把查询结果落成表数据;
- 能针对主键冲突场景写出 MySQL 的 ON DUPLICATE KEY UPDATE 或 PostgreSQL 的 ON CONFLICT 语法;
- 能执行"先 SELECT 预演 → 再 UPDATE/DELETE"的安全流程,并说出 where 条件外置的变通写法;
- 能对比 DELETE 与 TRUNCATE 在事务回滚、触发器、速度三个维度的差异;
- 能演示 BEGIN ... ROLLBACK 撤销一次误改。
本章概念全景
数据的方向感比语法更重要:知道每一行从哪来、到哪去、能不能撤回,你就比大一半的初学者安全。
往下走到哪
表里有了几十行真实数据,查询主线正式开爬。第 3 章先在单表之内把"表达力"补齐:列表达式、常用函数、NULL 的三值逻辑与 CASE 分支——它们是后面聚合、连接、窗口函数的地基砖块。
作者与出处
原作者:灏天文库
来源:平台策划编纂
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流