资料新增、修改与删除
进阶INSERT INTO 表 (栏位) VALUES (值) 新增;UPDATE 表 SET 栏位 = 新值 WHERE 条件 修改;DELETE FROM 表 WHERE 条件 删除。UPDATE/DELETE 永远带 WHERE,否则影响全表;操作前先 SELECT 确认、事后验证。
- 三句写入语句:INSERT INTO 新增、UPDATE SET 修改、DELETE FROM 删除。
- INSERT 稳妥写法:明确列出栏位,VALUES 的值与栏位一一对齐。
- UPDATE 和 DELETE 永远写 WHERE;漏了就影响全表,资料库不会警告你。
文体小知识:编程教学课每个概念都配一段可以亲手试的代码例子,照住输入、改一改,最快学会。
§课文原文 Passage
1SELECT 只会读资料;要改变资料库的内容,要用三句「写入」语句:INSERT INTO 新增一笔记录、UPDATE SET 修改现有记录、DELETE FROM 删除记录。新生入学用 INSERT,学生转班或补考出分用 UPDATE,退学用 DELETE — 资料库的全部日常维护就是这三件事。
2INSERT 的稳阵写法是指明栏位:INSERT INTO students (student_id, name, class, score) VALUES (2023011, '小美', '3A', 88);。明确列出栏位,即使日后表加了新栏位,这句照样正确。修改用 UPDATE students SET score = 92 WHERE student_id = 2023011;;删除用 DELETE FROM students WHERE student_id = 2023011;。
3UPDATE 和 DELETE 有一条救命规则:永远写 WHERE。漏了 WHERE 的 UPDATE students SET score = 90; 会把全班所有人的分数一次过改成 90;漏了 WHERE 的 DELETE FROM students; 会把整张表的记录全部清空 — 而且资料库不会问你「确定吗?」。真实事故中,多少工程师就是在这里失去整份资料。
4所以专业操作有一套安全流程:先用 SELECT 看清楚 WHERE 会影响哪些记录,确认无误才执行 UPDATE 或 DELETE,完成后再 SELECT 一次验证结果;重要资料库要先备份。资料完整性也由资料库守护:主键重复的新增会被拒绝、分数栏输入文字会出错 — 这些规则令资料库比试算表可靠得多。
1重点摘要 Summary
INSERT INTO 表 (栏位) VALUES (值) 新增;UPDATE 表 SET 栏位 = 新值 WHERE 条件 修改;DELETE FROM 表 WHERE 条件 删除。UPDATE/DELETE 永远带 WHERE,否则影响全表;操作前先 SELECT 确认、事后验证。
2生字卡 Vocabulary
向资料表加入一笔新记录的 SQL 语句,配 VALUES 指定各栏位的值。
INSERT 中按栏位次序给出实际值的部分,例如 VALUES (2023011, '小美', '3A', 88)。
修改现有记录栏位值的 SQL 语句,SET 指定新值,WHERE 限定范围。
从资料表删除记录的 SQL 语句,WHERE 决定删哪些;漏了 WHERE 会删光全表。
WHERE 决定 UPDATE/DELETE 会影响哪些记录;不写就是全部记录,极度危险。
资料保持正确一致的性质,由主键、栏位类型和范围规则守护。
资料库拒绝主键重复或空缺的新增,保证每笔记录可唯一辨识。
事先复制一份资料副本,出错或事故后可以还原。
写入操作后再用 SELECT 检查结果是否正确,是安全流程的最后一步。
3逐步讲解 Steps
- 新增一笔记录例如:INSERT INTO students (student_id, name, class, score) VALUES (2023011, '小美', '3A', 88);。栏位和值一一对应:学号 2023011、姓名小美、班别 3A、分数 88 — 四个栏位四个值,次序要对齐。文字值用单引号包住,数字不用;建议一律写明栏位清单,次序读起来一目了然。
- 新增后查证例如:SELECT * FROM students WHERE student_id = 2023011;。返回刚加入的一行 (2023011, 小美, 3A, 88) — 新增后立即 SELECT 是好习惯。SELECT 后也可指定栏位,例如 SELECT name, score FROM ...,只返回需要的资料;星号代表所有栏位,查证单一行时很方便。
- 修改一笔记录例如:小美补考得 92 分:UPDATE students SET score = 92 WHERE student_id = 2023011;。WHERE 用主键锁定唯一一行,只有小美的分数被改,其他人不受影响。漏写 WHERE 的 UPDATE 会改动全表,所以执行前先默数一次条件;主键是最可靠的条件,因为它绝不重复。
- 修改多笔记录例如:3B 班全体调分 +5:UPDATE students SET score = score + 5 WHERE class = '3B';。SET 可以用运算式(score = score + 5);WHERE 决定哪些行受影响 — 3B 每人加 5,3A、3C 不变。运算式逐行计算,各人以自己的分数加五;想改成固定分数,就写 SET score = 90。
- 删除一笔记录例如:DELETE FROM students WHERE student_id = 2023011;。只删走学号 2023011 那一行;删完再用 SELECT 查,应该返回零行。DELETE 删除整行,不可还原,执行前务必先 SELECT 确认目标;正式资料库常用软删除代替:加一个 deleted 栏位做记号。
- 无 WHERE 的灾难例如:UPDATE students SET score = 90;(漏 WHERE)— 全表所有人的分数变 90;DELETE FROM students;(漏 WHERE)— 整张表的记录全部消失。资料库不会弹窗问你确定吗。防范方法是养成习惯:UPDATE 与 DELETE 一律先写 WHERE,再补前半句;许多公司更要求先在测试资料库演练一次。
- 安全操作四步例如:①SELECT * FROM students WHERE class = '3B'; 先看会影响谁;②确认名单无误;③执行 UPDATE ... WHERE class = '3B';;④SELECT 再查一次验证。重要系统在第二步前先备份。四步顺序不可颠倒:先看、再确认、后执行、终验证;把这个流程养成反射动作,操作资料库就安全得多。
4图解 Diagrams
5例题示范 Example
例题:新生 Peter(学号 2023012)入读 3C 班,首次测验 75 分;补考后改为 81 分。写出所需的 SQL 语句并验证。
- 新增:INSERT INTO students (student_id, name, class, score) VALUES (2023012, 'Peter', '3C', 75);
- 修改:UPDATE students SET score = 81 WHERE student_id = 2023012; — 用主键锁定,只改 Peter 的分数。
- 验证:SELECT * FROM students WHERE class = '3C'; — 应返回 Peter 一行,分数已显示 81。
- 完整性检查:若再执行一次步骤一的 INSERT,资料库会拒绝,因为主键 2023012 已存在 — 这正是主键限制保护资料。
- 答案:三句 SQL:INSERT 新增 (2023012, Peter, 3C, 75);UPDATE 把 score 改为 81;SELECT 验证 3C 班名单。重复新增同一主键会被拒绝。
6常见错误 Mistakes
75 题快测 Quick check
Q1新生入学要加一笔记录,应用哪句 SQL?A. SELECT B. INSERT INTO C. UPDATE
Q2UPDATE students SET score = 90; 这句漏了什么?后果是什么?
Q3小美转读 3C 班,写出正确的 UPDATE 语句(假设她的学号是 2023011)。
Q4为什么重复 INSERT 同一个主键会被资料库拒绝?
Q5写出修改/删除资料前后的安全流程(至少三步)。
8重点回顾 Recap
- 三句写入语句:INSERT INTO 新增、UPDATE SET 修改、DELETE FROM 删除。
- INSERT 稳妥写法:明确列出栏位,VALUES 的值与栏位一一对齐。
- UPDATE 和 DELETE 永远写 WHERE;漏了就影响全表,资料库不会警告你。
- 资料完整性由规则守护:主键不重复、栏位类型和范围要正确。
- 安全四步:SELECT 确认 → 备份 → 执行 → SELECT 验证。