⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL UPDATE/DELETE

学习修改删除 · 难度:入门 · +10XP

SQL UPDATE 和 DELETE 操作

数据不是一成不变的:学生换班了需要更新班级信息,用户注销了需要删除账户记录,商品涨价了需要批量调价。SQL 中的 UPDATE 用于修改已有数据DELETE 用于删除数据。这两个操作与 INSERT 和 SELECT 一起构成了数据库的四大基本操作(CRUD:Create、Read、Update、Delete)。但需要格外小心,因为 UPDATE 和 DELETE 都直接修改数据,且不带 WHERE 条件时会作用于全表。

UPDATE 基本语法

UPDATE 表名
SET 列1 = 值1, 列2 = 值2, ...
WHERE 条件;  -- 务必加上条件!

UPDATE 示例

-- 修改单个学生的分数
UPDATE students SET score = 90 WHERE name = '张三';

-- 批量提分:给分数低于80的所有学生加5分 UPDATE students SET score = score + 5 WHERE score < 80;

-- 同时更新多列 UPDATE students SET score = 95, age = 21 WHERE id = 10;

-- 子查询更新:将低于平均分的学生标记为'需补考' UPDATE students SET status = '需补考' WHERE score < (SELECT AVG(score) FROM students);

DELETE 基本语法

DELETE FROM 表名 WHERE 条件;  -- 务必加上条件!
DELETE FROM 表名;               -- 危险!删除所有行!

DELETE 示例

-- 删除指定学生
DELETE FROM students WHERE id = 10;

-- 删除分数低于60的学生 DELETE FROM students WHERE score < 60;

-- 使用子查询删除 DELETE FROM students WHERE id IN (SELECT id FROM blacklist);

-- 删除所有记录(保留表结构) DELETE FROM students;

安全操作规范

  1. 先 SELECT 后 UPDATE/DELETE:执行前先用同样的 WHERE 条件执行 SELECT,确认将要影响的行
  2. 始终使用 WHERE:除非你确定要操作全表,否则永远写上 WHERE 条件
  3. 使用事务保护:在关键操作前开启事务(BEGIN),确认无误后再 COMMIT
  4. 备份先行:生产环境操作前确认有最新备份
  5. LIMIT 限制:MySQL 支持 UPDATE/DELETE 加 LIMIT 限制影响行数

常见错误和预防

错误后果预防
忘记 WHERE更新/删除全表数据先 SELECT 确认,开启事务
WHERE 条件写错影响范围不对先用 COUNT(*) 确认行数
子查询引用错误更新逻辑错误单独测试子查询
无事务保护误操作无法回滚养成 BEGIN...COMMIT 习惯

实战任务

  1. 更新指定学生的分数
  2. 批量将不及格学生(score<60)的分数提高 10 分
  3. 删除指定 ID 的学生记录(先 SELECT 确认再 DELETE)
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0