2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

數據庫drop、delete、truncate的區別?【Java面試題】

更新時間:2022-08-05 來源:黑馬程序員 瀏覽量:

IT培訓班

  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。

分享到:
在線咨詢 我要報名
和我們在線交談!