(1)当我们不再需要该表时,使用DROP
,会连表一起删掉,无法找回。速度很快。
DROP TABLE web_tbl_search;
(2)保留表结构,只删除表数据,使用TRUNCATE
,数据删除后,无法找回。速度很快。不能与WHERE
一起使用。
TRUNCATE TABLE system_sys_attachment;
(3)保留表结构,只删除表数据,使用DELETE
,可恢复删除的数据,速度较慢,可以与WHERE
联合使用。
(4)DELETE与TRUNCATE的区别
- TRUNCATE删除后不记录MySQL日志,因此不可以rollback,更不可以恢复数据;而DELETE可以rollback ;原理:TRUNCATE相当于保留原MySQL表结构,重新创建了这个表,所有的状态都相当于新的,而DELETE的效果相当于一行行删除,所以可以rollback。
- TRUNCATE比DELETE快,而且 TRUNCATE删除后将重建索引(新插入数据后id从0开始记起),而 DELETE不会删除索引 (新插入的数据将在删除数据的索引后继续增加)。
- DELETE可以和WHERE联合使用,TRUNCATE不行。
- TRUNCATE不会触发任何 DELETE触发器。