DELETE FROM 与 TRUNCATE TABLE区别与共同点(两种删除数据方式的比较)

常用的三种删除方式:通过 delete、truncate、drop 关键字进行删除;这三种都可以用来删除数据,但场景不同。

DELETE FROM 与 TRUNCATE TABLE区别

TRUNCATE TABLE和DELETE FROM在数据库管理中都用于删除表中的数据,但它们在执行方式、使用场景、性能影响以及后续操作方面有所不同。

以下是两种语句的具体区别:

语句格式

DELETE FROM可以带WHERE子句指定删除条件;
TRUNCATE TABLE则不支持带条件删除,它通常用于删除表中的所有记录

DELETE FROM:语句格式:DELETE FROM 表名 [WHER 条件];

TRUNCATE TABLE: 语句格式:TRUNCATE TABLE 表名;

DROP TABLE:语句格式:DROP TABLE 表名;


数据释放和空间回收

DELETE FROM删除数据后,不会释放表所占用的内存空间,且删除操作可撤销;
TRUNCATE TABLE删除数据后,会释放表所占用的内存空间,且删除操作不可撤销。

执行速度

DELETE FROM是一种逐行删除的操作,执行速度较慢;
TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,执行速度快。

执行速度:一般来说:drop>truncate>delete


触发器和使用场景

DELETE FROM会激发触发器;
TRUNCATE TABLE不会激发触发器。
因此,如果表定义了AFTER DELETE触发器,使用DELETE FROM可能会更合适。TRUNCATE TABLE通常用于快速清空表中的数据,尤其是在需要重置自增主键或表统计信息时。而DELETE FROM适用于需要逐个删除表中某些特定行的情况。


自增主键和标识

DELETE FROM不会重置自增主键,表中的自增主键仍然会继续递增;
TRUNCATE TABLE会重置自增主键,下一次插入数据时,自增主键从初始值开始。


事务处理

DELETE FROM可以事务回滚;
TRUNCATE TABLE不能事务回滚。

相同点

DELETE 与TRUNCATE都是仅会删除表数据,不会删除表结构,删除后表可以使用

应用场景

一般使用场景

  • 如果一张表确定不再使用,我们使用drop来操作
  • 如果只是删表中的全部数据,一般使用truncate
  • 如果删除的是表中的部分数据,一般使用delete

SQL语句示例

/*创建表*/
CREATE TABLE 删除的应用 (
    id INT  ,
       字段1 VARCHAR(50) )
       
/*插入多行(条)数据*/
INSERT INTO 删除的应用 (id, 字段1)
VALUES (1002,  '男'),
  (1003, '女'),
  (1004,  '男');

/*删除id等于1002的数据行*/
 DELETE FROM 删除的应用 
 	WHERE id =1002
 	
/*删除表中全部数据,且不可恢复*/
TRUNCATE TABLE 删除的应用

/*删除整个表*/
DROP TABLE 删除的应用

相关文章

#如何彻底删除数据库数据?#

© 版权声明
THE END
喜欢就点赞吧
分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容