欢迎投稿

今日深度:

MySQL语句之删除指令deleted和truncate在使用中的异同详解,

MySQL语句之删除指令deleted和truncate在使用中的异同详解,


目录
  • 删除指令deleted和truncate在使用中的异同
  • 理论
    • 1.功能
    • 2.事务性
    • 3.性能
    • 4.影响
    • 5.总结
  • 举个例子
    • 1.使用 DELETE
    • 2. 使用 TRUNCATE
    • 3. 对比
  • 总结

    删除指令deleted和truncate在使用中的异同

    在MySQL中,DELETETRUNCATE

    是两种不同的数据操作命令,虽然都能起到删除数据的作用,但是功能和影响均有所不同。

    理论

    1.功能

    • DELETE 用于从表中删除特定的行,通常基于特定的条件。
    • TRUNCATE 用于删除表中的所有数据,但保留表的结构。

    2.事务性

    • DELETE 是DML(数据操纵语言)命令,因此可以在事务中使用,并且可以通过 ROLLBACK 撤消删除操作。
    • TRUNCATE 是DDL(数据定义语言)命令,不能在事务中使用,也无法通过 ROLLBACK 撤消删除操作。

    3.性能

    • 删除大量数据时可能较慢,特别是如果表有索引,删除过程可能需要更新索引,因此相对较慢。
    • TRUNCATE 的性能通常比 DELETE 更好,特别是在删除大量数据时,因为它不记录删除的每一行,而是直接释放存储空间。

    4.影响

    • DELETE 仅删除满足条件的行,不影响表的结构。但是,它会记录删除的每一行,因此可能会增加事务日志的大小。
    • TRUNCATE 删除表中的所有行,但是保留表的结构,包括索引、约束等。它将表的自增长计数器重置为初始值。

    5.总结

    • DELETE 是DML命令,适合用于删除特定行,支持条件删除,并且可以在事务中使用,但是它比较慢且增加了事务日志的大小。
    • TRUNCATE 是DDL命令,用于删除表中的所有数据,性能通常比 DELETE 更好,但是无法撤销操作,且会重置自增长计数器。

    举个例子

    假设有一个名为 employees 的表,其中包含员工的信息,包括 idnamesalary

    现在需要删除这个表内的数据,并比较使用 DELETETRUNCATE 的效果。

    1.使用 DELETE

    -- 删除表中薪资低于 3000 的员工记录
    DELETE FROM employees WHERE salary < 3000;
    

    在这种情况下,DELETE 将删除所有薪资低于 3000 的员工记录。

    如果表中有许多匹配的行,则 DELETE 将逐行删除这些行。

    这可能需要一些时间,特别是如果表很大。

    2. 使用 TRUNCATE

    -- 清空整个表
    TRUNCATE TABLE employees;
    

    TRUNCATE 将清空整个表,即删除表中的所有行,但保留表的结构。

    在执行 TRUNCATE 后,表中的自增长计数器将重置为初始值,而且不会触发触发器。

    3. 对比

    使用 DELETE 时,我们可以根据条件选择性地删除行,而 TRUNCATE 则是将整个表清空。

    DELETE 是 DML 操作,可以在事务中使用,可以撤消,但可能比较慢。

    TRUNCATE 是 DDL 操作,不可回滚,性能通常比 DELETE 更好。

    因此,如果需要精确控制删除的行或者需要保留表的结构,可以使用 DELETE

    如果只是需要快速清空整个表而不关心数据内容,可以考虑使用 TRUNCATE

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持PHP之友。

    您可能感兴趣的文章:
    • MySQL触发器的使用和inserted和deleted表介绍
    • DELETE、TRUNCATE 和 DROP 在MySQL中的区别及功能使用示例
    • MySQL提示Truncated incorrect DOUBLE value解决方法
    • mysql正确删除数据的方法(drop,delete,truncate)
    • Mysql清空表数据库命令truncate和delete详解

    www.htsjk.Com true http://www.htsjk.com/Mysql/47770.html NewsArticle MySQL语句之删除指令deleted和truncate在使用中的异同详解, 目录 删除指令deleted和truncate在使用中的异同 理论 1.功能 2.事务性 3.性能 4.影响 5.总结 举个例子 1.使用 DELETE 2. 使用 TRUNCATE 3. 对...
    评论暂时关闭