1、TRAUNCAT TABLE A;
————清空A表,并且释放A表清空之前占用内存;
————TRUNCATE是一个DDL语言,执行之后自动提交事物,执行之后无法回滚。
————只有表格创建者,或者相关权限者才能执行此操作。
————执行速度快于DELETE;
————执行之后将重新设置高水位线(高水位线,High Water Mark,内存空间上限,Oracle中每个分区segment——也就是 内存空间,都有一个上限。当表占用空间超过上限,高水位线会增大,而且这个值只会增大,不会减小,当执行 DELETE时,虽然清楚了数据,但是HWM的值不会变,但是当执行TRUNCAT时,HWM会置为0);
————执行TRUNCATE之后再次操作表,速度会变快,因为HWM重置,不需要全表扫描很大的空间;
————当TRUNCATE表,表的所有索引被重置,进行查询操作速度会变快;
————当TRUNCATE会重置标识计数值,DELETE不会;
————当TRUNCATE会重置自增主键(Sequence键),从1开始,DELETE不会,这都是DDL性质决定的;
2、DELETE TABLE A;
————清空A表,不能释放A表清空之前占用内存;
————DELETE是DML语言,执行之后需要手动提交事物,执行之后可以回滚。
————执行DELETE之后再次操作表,速度不会变快,因为HWM没有重置,仍需要全表扫描很大的空间;
————当DELETE表,表的所有索引不会被重置,进行查询操作速度不会变快;
————当DELETE可以按条件删除,TRUNCATE不可以;
3、DROP TABLE A;
————DROP是DDL语句,隐式COMMIT,不能回滚;
————清除表结构,清除表空间,TRUNCATE和DELETE不会;
————DROP会清除该表所有的约束,触发器,索引等等;