truncate和delete
1.truncate 是ddl语言,执行后事务会立即自动提交生效,时间很短,所以不能rollback;
delete是dml语言,执行后不会自动提交,会先放到rollback segment中,等事务提交后才生效,可以rollback;
2.truncate 是最小模式记录日志,delete以完整模式记录日志,所以truncate比delete速度快;
3.在有外键约束的情况下,不能直接使用truncate删除数据,要先删除外键;
delete可以进行删除;
4.truncate释放空间,delete不释放空间;(drop会全部释放)
5.truncate删除表中所有数据;delete可以删除表中所有数据delete from table,也可以只删除部分数据,delete from table where (删除where过滤条件为true的部分)
6.delete和truncate都只是删除数据而不会删除标的结构(drop会删除结构,被依赖的触发器,约束,索引;会保留存储过程和函数,不过会变为无效状态)
7.delete操作会激活触发器;truncate不会;
8.delete删除数据后新行标识会延续原来的标识;truncate删除数据后标识会重置为最初的标识(一般从1开始)。