🗄️ 第三章 操作数据库-SQL的使用方法
📄 一句话概括

DELETE 删表里符合条件的行——柜子还在、东西拿走;和 DROP TABLE(柜子一起拆)、UPDATE 忘 WHERE(全表改)组成本章三大危险现场。

📝 本节和前面几节的关系

3-11 改记录,本节删记录——【操作家族】的最后一员。删与改共用电门:WHERE 忘写都是全表遭殃,本节讲完操作家族齐活。

一、DELETE 的语法骨架

DELETE FROM 表名 WHERE 条件;
-- 准备块(没建表先跑 3-6 的准备块)

-- 删掉学号 4 的记录
DELETE FROM students WHERE id = 4;

二、三种【删】的正名

命令 删什么 类比
DELETE FROM students WHERE ... 表还在,删符合条件的行 清掉柜子里几件东西
DELETE FROM students;(无 WHERE) 表还在,行全空 柜子腾空
DROP TABLE students;(3-5) 表本身+数据 柜子整个拆走

1-7 说过:订单取消多改状态不真删——商业数据要追溯,真删(DELETE/DROP)在日常业务里是少数派;【删】之前先想一句【真的要物理删,还是标记作废?】

三、动手 Demo:删一步验一步

-- ① 先 SELECT 确认要删谁(删前看一眼,救命习惯)
SELECT * FROM students WHERE id = 4;      -- 赵六

-- ② 删
DELETE FROM students WHERE id = 4;

-- ③ 验:只剩 4 行,赵六没了
SELECT * FROM students;

-- ④ 条件删:删 1 班 90 分以下的(张三 85 中弹)
DELETE FROM students WHERE class = 1 AND score < 90;

-- ⑤ 删不存在的行:0 行受影响,不报错
DELETE FROM students WHERE id = 999;

-- ⑥ 删空全表(演示用;跑完重建准备块)
DELETE FROM students;
SELECT * FROM students;    -- 0 行,表还在

看到什么算成功:③剩 4 行;⑤静默通过;⑥输出 0 行但查询不报错——表还活着,这才是 DELETE 与 DROP 的分水岭。

四、30 秒实验

删空后再插一条:

DELETE FROM students;
INSERT INTO students VALUES (1, '张三', 1, 85);
SELECT * FROM students;    -- 张三回来了

——DELETE 后表可以继续用;同样的流程换成 DROP TABLE,第二条 INSERT 直接报【no such table】。两种【删】的命运分岔,亲手走一遍。

五、常见误区

  1. "DELETE FROM students; 会连表一起删" —— 那是 DROP TABLE 的活;DELETE 只清行、留结构。
  2. "删错的行能撤销" —— SQL 没有【撤销】;能救你的只有备份或事务机制(后续章节)。所以删前先 SELECT 看一眼是铁习惯。
  3. "日常业务大量用 DELETE" —— 恰恰相反:正式系统爱用【状态标记作废】(1-7 的取消订单),真删是例外。
自测三问(点开对答案) 1. DELETE、DELETE 全表、DROP TABLE 三者的范围? **删符合条件的行/清空所有行但表在/表连数据全灭**。 2. 删错能撤销吗? **不能**;靠删前 SELECT 确认+备份。 3. 业务系统取消订单为什么多用改状态而不是 DELETE? **数据要可追溯**——物理删了就查无对证。

相关笔记