Truncate Drop 和 Delete的異同

2021-05-23 23:15:10 字數 1508 閱讀 9001

相同點

: truncate

和不帶where

子句的delete,

以及drop

都會刪除表內的資料

不同點: 

1. truncate

和delete

只刪除資料不刪除表的結構(定義

)  drop

語句將刪除表的結構被依賴的約束

(constrain),

觸發器(trigger),

索引(index);

依賴於該錶的儲存過程

/函式將保留

,但是變為

invalid

狀態. 

2.delete

語句是dml,

這個操作會放到

rollback segement中,

事務提交之後才生效

;如果有相應的

trigger,

執行的時候將被觸發

.  truncate,drop

是ddl,

操作立即生效

,原資料不放到

rollback segment中,

不能回滾

. 操作不觸發

trigger. 

3.delete

語句不影響表所占用的

extent,

高水線(high watermark)

保持原位置不動

顯然drop

語句將表所占用的空間全部釋放

truncate

語句預設情況下見空間釋放到

minextents

個extent,

除非使用

reuse storage;   truncate

會將高水線復位

(回到最開始

). 

4.速度

,一般來說

: drop>; truncate >; delete

5.安全性

:小心使用

drop

和truncate,

尤其沒有備份的時候

. 使用上

,想刪除部分資料行用

delete,

注意帶上

where

子句.

回滾段要足夠大

.  想刪除表

,當然用

drop 

想保留表而將所有資料刪除

. 如果和事務無關,用

truncate

即可.

如果和事務有關

,或者想觸發

trigger,

還是用delete. 

如果是整理表內部的碎片

,可以用

truncate

跟上reuse stroage,

再重新匯入

/插入資料

6.使用方法:

drop table tablename

,delete from tablename

,truncate table tablename

delete和truncate,drop的具體區別

truncate table 刪除表中的所有行,不記錄單個行刪除操作,使用的系統資源和事務日誌資源更少。1.truncate刪除資料後,表中標識列重置為定義的種子值,也就是標識列重新開始計數,用delete刪除資料,會保留標識計數器,新的自增量會從刪除前的最大值開始計數。2.truncate刪除資料...

類和物件DE初學吧

第一章 類和物件 類和物件是物件導向程式設計的兩個最基本 最重要的概念。所謂物件就是客觀事務在計算機中的抽象描述 而所謂類則是對具有相似屬性和行為的一組物件的統一描述。從程式語言的角度來說,類是一種資料型別,而物件是具有這種型別的變數。1.類的定義 類定義的一般形式為 class 類名 privat...

STL順序容器vector,list和deque

順序容器是通過將指定型別的元素按照位置順序進行儲存和訪問的一種容器型別.stl標準庫中的順序容器有三種 vector,list,和deque double ended queue雙端佇列,讀 d k 三個容器對應的標頭檔案 include include include一,容器的通用建構函式,假設容...