SQL INSERT / UPDATE / DELETE 增删改查总结

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 执行顺序

  1. 先根据 WHERE 找到要修改的行
  2. 再按 SET 修改字段值
  3. 最后提交生效

六、安全操作习惯

  1. 先写 WHERE,再写 SET

  2. 修改前先用 SELECT 检查 要改哪些行

    sql 复制代码
    SELECT * FROM User WHERE user_id = 1;
  3. 重要数据先备份再更新


总结

  • 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 必须遵守的规则

  1. 列和值必须一一对应
    数量、顺序、类型都要匹配
  2. 非空字段必须给值
    不能漏
  3. 主键/唯一键不能重复
    重复会报错
  4. 字符串、日期必须加 单引号
    '张三''2025-01-01'

四、插入时处理自增主键(非常常用)

如果主键是自动递增 (auto_increment),插入时不用写主键列

sql 复制代码
INSERT INTO student (student_name, age)
VALUES ('张三', 18);

五、INSERT 安全注意事项

  1. 插入前确认字段顺序,避免插错
  2. 批量插入优先用多行 VALUES,效率高
  3. 插入重复主键会报错,可使用:
    • 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;

五、安全操作习惯(工作必备)

  1. 先写 WHERE 条件,再写 DELETE

  2. 删除前先用 SELECT 检查

    sql 复制代码
    -- 先查询确认要删哪些
    SELECT * FROM Students WHERE student_id = 101;
  3. 重要数据先备份

  4. 生产环境尽量不用 DELETE,用 status 字段标记失效


总结

  • DELETE = 删除数据
  • WHERE = 删哪行(必须加)
  • 不加 WHERE 会清空整张表极其危险
  • 想清空全表用 TRUNCATE,速度更快
相关推荐
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第77题】【Mysql篇】第7题:回表查询与全表扫描的区别?
java·开发语言·数据库·mysql·面试
项目工具测评实验室2 小时前
复杂项目管理工具选型:飞书项目、PingCode、ONES 深度对比与真实场景分析
数据库·飞书·pingcode
Drache_long3 小时前
CentOS7安装Oracle数据库
数据库·oracle
auspicious航3 小时前
PostgreSQL逻辑复制全解析:从原理到跨区域实战
数据库·postgresql
無限進步D3 小时前
MySQL 聚合函数
数据库·mysql
许彰午4 小时前
开发转兼职DBA(四):又起不来了——MVCC、undo与回滚段
数据库·dba
就叫飞六吧4 小时前
生产数据库批量 UPDATE / DELETE 核心要点-不备份=自行提桶跑路
数据库·sql·mysql
deepin_sir4 小时前
05 Chroma_高级检索:过滤、距离算法与元数据魔法
网络·数据库·算法
聚美智数4 小时前
邮箱验证-电子邮件地址校验-邮件地址验证-邮箱校验接口介绍
java·开发语言·数据库
天行健,君子而铎4 小时前
智识数据·合规赋能——知源-AI数据分类分级系统破解通用行业数据治理困局
大数据·网络·数据库