truncate只能一下子清空表 而不可以选择性删除 (序号会重头开始):truncate (表名)
delete 可以选择性删除,也可以一次删除全部,但是速度不及truncate
选择性删除:delete from (table) where id = 1;
全删:delete from (table);
ps1:
drop 是删除整个表(毁灭性),truncate和delete会保留表结构。
ps2:
truncate你可以理解为ddl,
delete是dml。
ddl和dml的定义我不多说了。
truncate删数就跟直接格式化硬盘类似,不管有多少数据,我就直接删除,跟drop表一样,无非就是空表留下了。速度不用提,快的很!
delete删除是事务性的一条条删,要记录各种日志,以防你反悔回滚!
因此删一条,记录一条,慢死!
但是,并不是那个快就胡乱用,如果你平时总是需要整表删,那么你用哪个清楚了吧嘿嘿
delete往往用在事务性操作里面,比如删除一条多条数据,如果你用delete删除整表,实在浪费资源,而且对oracle来说,delete不会降低高水位,因此删的次数多了表操作会变慢!
这是讲删除整表时的操作,记住凡事都有两面性!truncate删除不可恢复!delete还可以恢复!