MySQL中drop、delete与trancate的区别

drop table

  • 删除指定的表的结构和数据,执行后表将不存在
  • 无法恢复删除的数据
  • 等同于删除一个Excel表
DROP TABLE table_name;

DELETE

  • 只从表中删除数据,不删除表的结构
  • 允许删除指定条件的部分数据,若没有指定删除条件,就直接清空表中所有数据
  • 执行后表仍旧存在,但表中没有数据
  • 等同于删除一个Excel中的数据
  • 可通过还原备份或回放二进制日志来恢复被删除的数据
DELETE FROM table_name WHERE condition;

TRUNCATE

  • 同delete一样,用于清空表中的数据
  • 不可指定删除条件,直接删除所有数据
  • 不仅会删除表中数据,还会重置表中的自增计数器(也就是有auto_increment约束的字段的值)
  • 无法通过还原备份或回放日志来恢复被清空的数据
TRUNCATE TABLE table_name;

总结:

  • DROP TABLE: 删除整个表,包括表结构和数据,无法恢复。
  • DELETE: 删除表中的数据,可以使用 WHERE 子句指定条件,但是不会重置自增计数器。
  • TRUNCATE: 删除整个表中的数据,重置自增计数器,并释放表占用的存储空间,使其回到初始状态。

你可能感兴趣的:(数据库,mysql,数据库)