SQL UPDATE 语句使用方法总结
UPDATE 用于修改表中已存在的数据,是日常最常用、也最危险的写操作,必须严格掌握用法和安全规则。
一、基础语法
sql
UPDATE 表名
SET 列1 = 值1, 列2 = 值2, ... -- 要修改的字段
WHERE 条件; -- 定位要修改的行(必加!)
最简单示例
sql
-- 把 id=1 的学生姓名改为"张三"
UPDATE Students
SET student_name = '张三'
WHERE student_id = 1;
二、常用用法
1. 修改单个字段
sql
UPDATE User
SET age = 20
WHERE user_id = 100;
2. 同时修改多个字段(逗号分隔)
sql
UPDATE User
SET name = '李四', age = 22, city = '北京'
WHERE user_id = 101;
3. 基于原有值修改(常用)
sql
-- 分数 +10
UPDATE Exam
SET score = score + 10
WHERE class = '一班';
4. 修改为 NULL
sql
UPDATE User
SET phone = NULL
WHERE user_id = 102;
三、带条件的高级用法
1. 多条件修改
sql
UPDATE Order
SET status = 2
WHERE create_time < '2025-01-01' AND status = 1;
2. 关联表修改(多表一起更新)
sql
-- MySQL 风格
UPDATE Customer c
JOIN Order o ON c.customer_id = o.customer_id
SET c.level = 'VIP'
WHERE o.total_amount > 1000;
四、千万记住:WHERE 是保命符!
❌ 危险(不加 WHERE → 全表被修改!)
sql
UPDATE User
SET age = 20; -- 整张表所有行的 age 都会变成 20
✅ 安全(必须加 WHERE)
sql
UPDATE User
SET age = 20
WHERE user_id = 1; -- 只改一行
五、UPDATE 执行顺序
- 先根据 WHERE 找到要修改的行
- 再按 SET 修改字段值
- 最后提交生效
六、安全操作习惯
-
先写 WHERE,再写 SET
-
修改前先用 SELECT 检查 要改哪些行
sqlSELECT * FROM User WHERE user_id = 1; -
重要数据先备份再更新
总结
- UPDATE = 修改数据
- SET = 要改成什么
- WHERE = 改哪一行(必须加)
- 不加 WHERE 会全表更新,极危险
SQL INSERT 语句使用方法总结
INSERT 用于向数据库表中新增一行或多行数据**,是最常用的写入操作之一,语法简单、但规范很重要。**
一、基础语法
sql
INSERT INTO 表名 (列1, 列2, 列3, ...)
VALUES (值1, 值2, 值3, ...);
作用:向指定表的指定列中插入一行数据。
二、最常用 4 种写法
1. 插入一行(最常用)
sql
INSERT INTO student (student_id, student_name, age)
VALUES (101, '张三', 18);
2. 一次性插入多行(高效)
sql
INSERT INTO student (student_id, student_name, age)
VALUES
(102, '李四', 19),
(103, '王五', 20),
(104, '赵六', 18);
3. 不写列名(必须按表字段顺序全写)
不推荐,容易出错
sql
INSERT INTO student
VALUES (105, '钱七', 21);
4. 从另一张表查询插入(批量导入)
sql
INSERT INTO student (student_id, student_name)
SELECT user_id, user_name FROM user;
三、INSERT 必须遵守的规则
- 列和值必须一一对应
数量、顺序、类型都要匹配 - 非空字段必须给值
不能漏 - 主键/唯一键不能重复
重复会报错 - 字符串、日期必须加 单引号
'张三'、'2025-01-01'
四、插入时处理自增主键(非常常用)
如果主键是自动递增 (auto_increment),插入时不用写主键列:
sql
INSERT INTO student (student_name, age)
VALUES ('张三', 18);
五、INSERT 安全注意事项
- 插入前确认字段顺序,避免插错
- 批量插入优先用多行 VALUES,效率高
- 插入重复主键会报错,可使用:
INSERT IGNORE(跳过重复)ON DUPLICATE KEY UPDATE(存在则更新)
总结
- INSERT = 新增数据
- INTO 可写可不写(建议写,更清晰)
- 列名与值必须对应
- 支持单行、多行、查询结果插入三种方式
SQL DELETE 语句使用方法总结
DELETE 用于删除表中已有的数据 ,是最危险 的 SQL 语句之一,必须严格配合 WHERE 条件使用!
一、基础语法(必背)
sql
DELETE FROM 表名
WHERE 条件; -- 筛选要删除的行(保命符!)
简单示例
sql
-- 删除 id=101 的学生
DELETE FROM Students
WHERE student_id = 101;
二、常用用法
1. 删除指定行(带 WHERE,最常用、最安全)
sql
-- 删除不及格的成绩
DELETE FROM Score
WHERE score < 60;
2. 多条件删除
sql
-- 删除 2024年以前 的无效订单
DELETE FROM `Order`
WHERE status = 0
AND create_time < '2024-01-01';
3. 关联表删除(删除多表关联数据)
sql
-- MySQL 风格:删除用户及其对应的订单
DELETE u, o
FROM User u
JOIN `Order` o ON u.user_id = o.user_id
WHERE u.user_id = 100;
三、极度危险操作(千万小心)
❌ 不加 WHERE → 删除全表所有数据
sql
DELETE FROM User; -- 整张表数据清空!
四、DELETE vs TRUNCATE(面试常考)
| 语句 | 作用 | 能否回滚 | 能否加 WHERE | 性能 |
|---|---|---|---|---|
| DELETE | 删除指定行 | 可以 | 可以 | 较慢 |
| TRUNCATE | 清空全表 | 不可以 | 不可以 | 极快 |
sql
-- 清空整张表(比 DELETE 快)
TRUNCATE TABLE User;
五、安全操作习惯(工作必备)
-
先写 WHERE 条件,再写 DELETE
-
删除前先用 SELECT 检查
sql-- 先查询确认要删哪些 SELECT * FROM Students WHERE student_id = 101; -
重要数据先备份
-
生产环境尽量不用 DELETE,用 status 字段标记失效
总结
- DELETE = 删除数据
- WHERE = 删哪行(必须加)
- 不加 WHERE 会清空整张表 ,极其危险
- 想清空全表用
TRUNCATE,速度更快