第2章 数据的写入与修改:INSERT、UPDATE、DELETE


第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 分支——它们是后面聚合、连接、窗口函数的地基砖块。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U