1. 程式人生 > >DELETE和TRUNCATE 的區別

DELETE和TRUNCATE 的區別

delete from aa

truncate table aa

區別

1。delete from後面可以寫條件,truncate不可以

2。delete from記錄是一條條刪的,所刪除的每行記錄都會進日誌,而truncate一次性刪掉整個頁,因此日至裡面只記錄頁釋放,簡言之,delete from更新日誌,truncate基本不,所用的事務日誌空間較少

3。delete from刪空表後,會保留一個空的頁,truncate在表中不會留有任何頁

4。當使用行鎖執行 DELETE 語句時,將鎖定表中各行以便刪除。truncate始終鎖定表和頁,而不是鎖定各行。

5。如果有identity產生的自增id列,delete from後仍然從上次的數開始增加,即種子不變,而truncate後,種子會恢復初始

6。truncate不會觸發delete的觸發器,因為truncate操作不記錄各個行刪除



Plus:
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,再重新匯入/插入資料

相關推薦

mysql清空表命令:deletetruncate區別

mysql清空表可以用delete和truncate兩個命令來完成:      1. delete          ① 語法:delete from table_name;          ② 示例:DELETE FROM `order`;      2. truncate          ① 語法:t

oracle中drop、deletetruncate區別

win style 刪除數據 oracl 數據庫 不能 存在 表空間 結構 oracle中可以使用drop、delete和truncate三個命令來刪除數據庫中的表, 1. delete和truncate都是刪除表中的內容而不能刪除表的結構,而drop則是刪除表的結構和內容

Oracle DELETETRUNCATE區別

提交 acl trigge llb 刪除 dex 語句 val let 語法delete from aa truncate table aa 區別 1.delete from後面可以寫條件,truncate不可以。 2.delete from記錄是一條條刪的,所刪除的每行

drop,deletetruncate區別

Truncate速度比較快。 Truncate刪除所有行,如果遇到任何一行違反違約(外來鍵約束),照刪不誤,但delete則會返回錯誤。 如果想保留標識計數值,要用delete,而truncate重新設定高水平。 Truncate是DDL語言,將被隱式提交

DELETETRUNCATE區別

delete from aa truncate table aa 區別 1。delete from後面可以寫條件,truncate不可以 2。delete from記錄是一條條刪的,所刪除的每行記錄都會進日誌,而truncate一次性刪掉整個頁,因此日至裡面只記錄頁釋放,簡言

truncatedeletedrop區別

相同點: 1.truncate和不帶where子句的delete、以及drop都會刪除表內的資料。 2.drop、truncate都是DDL語句(資料定義語言),執行後會自動提交。 不同點: 1. truncate 和 delete 只刪除資料不刪除表的結構(定義

mysql中的delete , drop truncate 區別

bubuko 連表 分享 區別 sql 不想 show 直接 cat 1、delete 和 truncate 僅僅刪除表數據,drop 連表數據和表結構一起刪除,打個比方,delete 是單殺,truncate 是團滅,drop 是把電腦摔了。 2、delete 是

mysql 中deletetrncate區別

重新 sql delet use 它的 刪除 掃描 進行 from mysql中刪除表記錄delete from和truncate table的用法區別: MySQL中有兩種刪除表中記錄的方法:(1)delete from語句,(2)truncate table語句。 d

dql刪除表:delete,drop,truncate 區別

1.drop: 刪除 內容、表結構 用法:drop table 表名 2.delete: 刪除內容,不刪除表結構 用法:delete table 表名 --刪除整個表的資料,但是delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項

deletetruncate/drop恢復資料的過程

使用myflash工具恢復delete操作資料,myflash工具注意事項: 該工具注意事項 1.binlog格式必須為row,且binlog_row_image=full 2.僅支援5.6與5.7 3.只能回滾DML(增、刪、改)

Oracle-09-刪除表(droptruncate區別、閃回刪除等)

一、如果既要刪除表中的資料也要刪除表的結構,請使用droptable語句,其格式如下: drop table 表名 drop table語句(是DDL語句)有如下特徵: (1)它刪除表中所有的資料

很精闢的oracle高水位線,終於知道DELETETRUNCATE為什麼不一樣了

一、Oracle表段中的高水位線HWM在Oracle資料的儲存中,可以把儲存空間想象為一個水庫,資料想象為水庫中的水。水庫中的水的位置有一條線叫做水位線,在Oracle中,這條線被稱為高水位線(High-warter mark, HWM)。在資料庫表剛建立的時候,由於沒有任

deleteTruncate的較量

前幾天在做一個功能,因為之前往資料庫裡添加了不正確的資料,所以想要將表裡的資料刪除一下。腦袋裡想也沒想,直接就用了個Delete,由於資料量真的很大,足足刪除了將近半個小時,這時候,我就知道自己錯了。

詳解SQL中drop、deletetruncate的異同

第一:相同點:  truncate和不帶where子句的delete,以及drop 都會刪除表內的資料 第二:不同點: 1. truncate和delete只刪除資料不刪除表的結構(定義)     drop 語句將刪除表的結構被依賴的約束(constrain)、觸發器(trigger)、索引(index);

oracle中delecttruncate區別

delete和truncate table的區別:delete效能好於truncate delete是DML,truncate是DDL (DML可以rollback,DDL不可以) delete

drop、truncatedelete的用法區別

一、SQL中的語法 1、drop table 表名稱 eg: drop table dbo.Sys_Test 2、truncate table 表名稱 eg: truncate table dbo.Sys_Test 3、delete from 表名稱 where 列名稱 = 值 eg:

DropTruncateDelete區別

1.Drop DROP TABLE test; 刪除表test,並釋放空間,將test刪除的一乾二淨。(結構也被完全刪除)   2.Truncate TRUNCATE test; 刪除表test裡的內容,並釋放空間,但不刪除表的定義,表的結構還在。  

delete刪除表truncate有什麼區別

delete刪除表中的資料時沒有加where 條件,會刪除表中的所有資料,它與truncate 有什麼區別?  刪除過程不同 truncate 刪除資料,過程先將整個表刪除,再重新建立 delete 刪除資料,逐行刪除記錄 truncate 效率要好於 delete  語言定義不同

Oracle資料庫中truncate命令delete命令的區別

首先講一下,truncate命令: 語法:TRUNCATE  TABLE  table; 表格裡的資料被清空,儲存空間被釋放。 執行後會自動提交,包括之前其它未提交的會話,因而一旦清空無法回退。 只有表格的建立者或者其他擁有刪除任意表格許可權的使用者(如DBA)才能清空表格。 TRUNCATE  TABL

deletetruncate delete之間的區別

eache data- enter 註意 及其 事務提交 next trigge filter 1.首先看下語法定義: drop table_name truncate table_name delete table_name [where column_name = v