Oracle 刪除數據的三種方法
刪除表(記錄和結構)的語名delete ———— truncate ————drop
drop 命令
drop table 表名;
例如:刪除學生表(student)
drop table student;
注意:
1. 用drop刪除表數據,不但會刪除表中的數據,連表結構也被刪除了!
truncate 命令
truncate table 表名;
例如:刪除學生表(student)
truncate table student;
注意:
1. 用truncate刪除表數據,只是刪除表中的數據,表結構不會被刪除!
2. 刪除整個表的數據時,過程是系統一次性刪除數據,效率比較高
3. truncate刪除釋放空間
delete 命令
delete table 表名;
例如:刪除學生表(student)
delete table student;
注意:
1. 用delete刪除表數據,只是刪除表中的數據,表結構不會被刪除!
2. 雖然也是刪除整個表的數據,但是過程是系統一行一行地刪,效率比truncate低
3. delete刪除是不釋放空間的
關於truncate的小小總結:
truncate table 在功能上與不帶 WHERE 子句的 delete語句相同:二者均刪除表中的全部行。
但 truncate 比 delete速度快,且使用的系統和事務日志資源少。
delete 語句每次刪除一行,並在事務日志中為所刪除的每行記錄一項。所以可以對delete操作進行roll back。
1、truncate 在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete將被撤銷,而 truncate 則不會被撤銷。
2、truncate 是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對 truncate 使用ROLLBACK命令。
3、truncate 將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過 truncate 操作后的表比Delete操作后的表要快得多。
4、truncate 不能觸發任何Delete觸發器。
5、當表被清空后表和表的索引講重新設置成初始大小,而delete則不能。
6、不能清空父表