更新時間:2022-08-05 來源:黑馬程序員 瀏覽量:
1、刪除內容:drop操作會刪除表結構、依賴的約束、索引以及觸發器,并且會將依賴該表的所有存儲過程和視圖設置為invalid;而truncate和delete則是只會刪除表中的數據,并不會刪除表結構。因此如果該表以后不再需要的話可以使用drop,而如果后續還需要的話可以通過truncate或delete,因為這樣可以不需要再重新建立表。
2、刪除空間:delete操作并不會更改所占用的區的空間,高水位線不會發生改變。drop操作就會直接刪除整個表空間,而執行truncate則是相對于先執行drop操作,然后在執行create操作,執行完成后會恢復初始的表空間。
3、語句類型:delete 語句是DML語句,這個操作會放到 rollback segement
中,事務提交之后才生效;并且可以執行對應的觸發器。但truncate、drop是DDL操作,會包含implicit
commit,因此不能回滾,也不能不觸發觸發器。
4、效率:從第二點的描述中可以推斷truncate的執行效率要低于drop操作;而delete操作則是按照行記錄一行一行的進行刪除,因此其效率更低。
5、安全性:使用 drop 和 truncate會導致整個表中的數據都被刪除,需格外注意。如果僅想刪除部分數據可用delete,但是需要注意where子句得到的范圍,會占用rollback segement。