开发者

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

目录
  • 一、前言
  • 二、mysql 中的三种删除方式
    • 1.DELETE语句
      • ✅ 基本语法:
      • 示例:
    • 2.TRUNCATE语句
      • ✅ 基本语法:
      • 示例:
    • 3.DROP语句
      • ✅ 基本语法:
      • 示例:
  • 三、DELETE高级用法
    • 1. 使用DELETE删除多表数据(多表关联删除)
      • ✅ 基本语法:
      • 示例:
    • 2. 使用LIMIT限制删除条数
      • ✅ 基本语法:
      • 示例:
    • 3. 使用ORDER BY和LIMIT
      • 示例:
  • 四、DELETE与TRUNCATE的区别
    • 五、删除操作的注意事项
      • 六、总结

        一、前言

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

        本文将介绍:

        • DELETETRUNCATEDROP 的用法和区别
        • DELETE 语句的高级用法
        • 删除操作的注意事项和最佳实践

        二、MySQL 中的三种删除方式

        1.DELETE语句

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

        ✅ 基本语法:

        DELETE FROM 表名 WHERE 条件;
        • 表名:要操作的表名称。
        • WHERE 条件:指定要删除的记录,省略则删除所有记录。
        • 不加 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 us编程客栈ers WHERE name = 'Bob';

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

        删除所有数据:
        DELETE FROM users;

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

        删除多行www.devze.com
        DELETE FROM users WHERE age > 25;

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

        2.TRUNCATE语句

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

        ✅ 基本语法:

        TRUNCATE TABLE 表名;
        • 作用:清空表中的数据,但保留表结构。
        • 效率:比 DELETE 快,且释放表空间。
        • 自增 ID 重置TRUNCATE 会将 AUTO_INCREMENT 重置为 1。

        示例:

        TRUNCATE TABLE users;

        ✅ 结果:

        • 清空表数据。
        • id 自动增长重置为 1。

        3.DROP语句

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

        ✅ 基本语法:

        DROP TABLE 表名;
        • 作用:删除表及其数据,无法恢复。
        • 效率:速度快,但不可恢复。

        示例:

        DROP TABLE users;

        ✅ 结果:

        • users 被删除,数据和表结构都不存在。

        三、DELETE高级用法

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

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

        ✅ 基本语法:

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

        示例:

        假设有以下两张表:

        • orders(订单表)
        • customers(客户表)
        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';

        ✅ 结果:

        • 删除 Bob 相关的订单数据。

        2. 使用LIMIT限制删除条数

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

        ✅ 基本语法:

        DELETE FROM php表名 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 中,删除数据主要使用以下三种方式:

        • DELETE:按条件删除数据,记录日志,可回滚。
        • TRUNCATE:清空表数据,不记录日志,不可回滚。
        • DROP:删除表及数据,无法恢复。

        高级用法:

        • 使用 LIMIT 限制删除条数,防止误删大量数据。
        • 多表关联删除,提高操作灵活性。
        • 使用事务保护数据,防止误删不可恢复。

        到此这篇关于MySQL 删除数据详解的文章就介绍到这了,更多相关mysql 删除数据内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新数据库

        数据库排行榜