在删除数据库中的数据时,常常会存在这样几种情况:
-
已经确定删除整张表和数据,也不需要恢复数据了,用
drop;
-
删除数据不删除表,但是删除之后还有可能会后悔,用
delete;
-
只想删除数据,不用删除表,删除数据后不会后悔了,用
truncate;
-
执行速度:
drop> truncate > delete
用法
-
DROP TABLE 表名;
drop 是直接将表格删除,无法找回。将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);
-
DELETE FROM 表名;
delete 可以和 where 子句连用删除指定行;
delete 的效果相当于一行行删除,所以可以 rollback;
delete 不会删除索引 (新插入的数据将在删除数据的索引后继续增加);
-
TRUNCATE TABLE 表名;
truncate 是删除表中所有数据,但不能与 where 一起使用;
truncate 删除后不记录 mysql日志,因此不可以 rollback,更不可以恢复数据;
truncate 删除后将重建索引;
truncate 不会触发任何 DELETE触发器;
外键约束无法删除
如有有外键约束,无法删除时,可以临时关闭外键约束,更详细的关于关闭外键约束的,请看 一些实用查询-->外键约束关闭
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE pcc_telescope_entries;
TRUNCATE TABLE pcc_telescope_entries_tags;