oracle 中刪除表 drop delete truncate


相同點,使用drop delete truncate 都會刪除表中的內容

drop table 表名

delete from 表名(后面不跟where語句,則也刪除表中所有的數據)

truncate table 表名

區別

首先delete 屬於DML,當不commit時時不生效的

而truncate 和 drop 則是直接生效的,不能回滾。

truncate 和 delete 不刪除表的結構,只是針對表中的內容刪除

drop語句將刪除表的結構,被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的存儲過程/函數將保留,但是變為invalid狀態.

truncate 會釋放占用空間,而drop 和 delete不會。

速度:drop>truncate>dalete

綜上所述,可以得到一個問題,使用drop 和 truncate相對delete是危險的,當使用drop 和 truncate 時不能回滾。delete相對安全,可以回滾,並且commit以后才會提交,並且不會刪除表結構,也不會釋放表所占用的空間。


Oracle數據庫中刪除一個大表的內容而不刪除表結構的命令是什么
用truncate命令或者delete命令,但從本質上,如果數據很多,truncate的速度很快,delete則會很慢。

truncate命令:

1
truncate table 表名;
delete命令:
1
delete from 表名;
兩者的區別在於,truncate是從根節點刪除數據,而delete則是逐條刪除數據。另外delete語句后可以接where條件,達到刪除部分數據,而truncate則不行。
delete from table_name
刪除數據而不刪除表結構,或者truncate table table_name


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM