drop,delete與truncate的區別

drop

(1)drop直接刪掉表;
(2)drop語句將表所佔用的空間全釋放掉。
(3)drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger)索引(index);依賴於該表的存儲過程/函數將被保留,但其狀態會變爲:invalid。

delete

(1)delete刪除表中數據,可以加where字句
(2)delete操作不會減少表或索引所佔用的空間。
(3)範圍:可以是table和view。
(4)只刪除數據,而不刪除表的結構(定義)
(5)delete語句爲DML(Data Manipulation Language),這個操作會被放到 rollback segment中,事務提交後才生效。如果有相應的 tigger,執行的時候將被觸發。
(6)delete語句每次刪除一行,並在事務日誌中爲所刪除的每行記錄一項。

truncate

(1)truncate刪除表中數據,再插入時自增長id又從1開始, 只刪除數據,而不刪除表的結構(定義)
(2)truncate、drop是DDL(Data Define Language),操作立即生效,原數據不放到 rollback segment中,不能回滾
(3)Truncate table 表名 速度快,而且效率高,因爲: truncate table 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。
(4)對於由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章