Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql 删除数据

MySQL 删除数据详解(最新整理)

作者:wdwc2

这篇文章主要介绍了MySQL 删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一、前言

在 MySQL 中,可以使用 DELETETRUNCATEDROP 语句来删除数据。这三者虽然都能达到删除数据的效果,但它们的作用范围、执行效率以及数据恢复能力存在差异。

本文将介绍:

二、MySQL 中的三种删除方式

1.DELETE语句

DELETE 语句用于删除表中符合条件的数据行,不删除表本身。

✅ 基本语法:

DELETE FROM 表名 WHERE 条件;

🔥 示例:

假设有以下表 users

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT,
    city VARCHAR(50)
);
-- 插入测试数据
INSERT INTO users (name, age, city) VALUES
('Alice', 25, 'Beijing'),
('Bob', 30, 'Shanghai'),
('Charlie', 35, 'Guangzhou');
删除指定行:
DELETE FROM users WHERE name = 'Bob';

✅ 结果:删除 name='Bob' 的记录。

删除所有数据:
DELETE FROM users;

✅ 结果:清空表中数据,但表结构还在。

删除多行:
DELETE FROM users WHERE age > 25;

✅ 结果:删除所有年龄大于 25 岁的用户。

2.TRUNCATE语句

TRUNCATE 语句用于清空表中的所有数据,但不会记录删除操作,效率比 DELETE 更高。

✅ 基本语法:

TRUNCATE TABLE 表名;

🔥 示例:

TRUNCATE TABLE users;

✅ 结果:

3.DROP语句

DROP 语句用于删除表本身,不仅数据被删除,表结构也会消失。

✅ 基本语法:

DROP TABLE 表名;

🔥 示例:

DROP TABLE users;

✅ 结果:

三、DELETE高级用法

1. 使用DELETE删除多表数据(多表关联删除)

在多表关联查询时,可以使用 JOIN 删除多个表中的数据。

✅ 基本语法:

DELETE 表别名 FROM 表1 AS 别名1
JOIN 表2 AS 别名2 ON 关联条件
WHERE 条件;

🔥 示例:

假设有以下两张表:

CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(50)
);
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    amount DECIMAL(10,2),
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
-- 插入数据
INSERT INTO customers VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
INSERT INTO orders VALUES (1, 1, 100.50), (2, 2, 200.75), (3, 3, 300.25);
删除与Bob相关的订单:
DELETE o FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE c.name = 'Bob';

✅ 结果:

2. 使用LIMIT限制删除条数

在删除大量数据时,可以使用 LIMIT 限制删除的行数,防止误操作导致大量数据丢失。

✅ 基本语法:

DELETE FROM 表名 WHERE 条件 LIMIT N;

🔥 示例:

删除 users 表中的前两条记录:

DELETE FROM users ORDER BY id ASC LIMIT 2;

✅ 结果:

3. 使用ORDER BY和LIMIT

在删除数据时,可以通过 ORDER BYLIMIT 指定删除顺序和数量。

🔥 示例:

删除年龄最大的 2 个用户:

DELETE FROM users
ORDER BY age DESC
LIMIT 2;

✅ 结果:

四、DELETE与TRUNCATE的区别

对比项DELETETRUNCATE
数据删除方式按行删除整表清空
是否记录日志记录日志不记录日志
自增 ID 重置不重置重置为 1
删除速度慢,逐行删除快,清空整表
是否可回滚可回滚(开启事务)不可回滚
触发器是否执行会触发不会触发
表空间释放不释放释放表空间

五、删除操作的注意事项

  1. 谨慎使用 DELETETRUNCATE

    • TRUNCATE 无法回滚,清空数据前要三思。
    • 在执行删除前,最好使用 SELECT 确认数据范围。
  2. 使用事务防止误操作

    • 在执行大批量删除时,使用事务以便回滚:
    START TRANSACTION;
    DELETE FROM users WHERE age > 30;
    ROLLBACK; -- 撤销操作
    COMMIT;   -- 确认操作
  3. 备份数据

    • 删除操作前,备份重要数据,以防误删。

六、总结

在 MySQL 中,删除数据主要使用以下三种方式:

高级用法:

到此这篇关于MySQL 删除数据详解的文章就介绍到这了,更多相关mysql 删除数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文