MySQL 三种删除方式的区别

4 min read

MySQL有三种删除方式:DELETE、TRUNCATE和DROP。

  1. DELETE:DELETE是一种DML(数据操作语言)语句,用于从表中删除指定的行。它可以使用WHERE子句来指定删除的条件。DELETE语句只删除表中的数据,但不删除表的结构。删除的数据可以使用ROLLBACK命令进行回滚。

  2. TRUNCATE:TRUNCATE是一种DDL(数据定义语言)语句,用于删除表中的所有数据。TRUNCATE语句将删除表中的所有数据,并且不能使用WHERE子句指定条件进行删除。与DELETE语句不同,TRUNCATE语句将重置表的计数器,并释放存储在表中的空间。TRUNCATE语句不能回滚,一旦执行,数据将无法恢复。

  3. DROP:DROP是一种DDL语句,用于删除整个数据库对象,如表、索引、视图、触发器、存储过程等。DROP语句将删除对象的定义和所有相关的数据。与DELETE和TRUNCATE不同,DROP语句不仅删除数据,还删除对象的结构和定义。DROP语句也不能回滚,一旦执行,对象将无法恢复。

总结:

  • DELETE用于删除表中的特定行,不删除表结构,可以带有WHERE子句,可以回滚。
  • TRUNCATE用于删除整个表的所有数据,重置计数器和释放空间,不带WHERE子句,不能回滚。
  • DROP用于删除整个数据库对象,包括数据和结构,不带WHERE子句,不能回滚。