drop truncate和delete的區別

2021-08-19 06:12:09 字數 3044 閱讀 9588

刪除表資料

drop

、truncate

和delete

的用法說到刪除表資料的關鍵字

,大家記得最多的可能就是

delete

了然而我們做資料庫開發

,讀取資料庫資料

.對另外的兩兄弟用得就比較少了

現在來介紹另外兩個兄弟

,都是刪除表資料的

,其實也是很容易理解的

老大

------drop

出沒場合

:drop table  tb --tb

表示資料表的名字,下同

絕招:刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.

以後要新增資料是不可能的

,除非新增乙個表,例如

:乙個班就是乙個表

,學生就是表中的資料

,學生的職務就是定義

drop table class,

就是把整個班移除

.學生和職務都消失

比如下面

test

school

資料庫中有兩張表

[classes]

表和[teacher]

當執行下面**之後

classes

表就被清楚

,一乾二淨

! 刪除得非常暴力

,作為老大實至名歸

老二

-----truncate

出沒場合

:truncate table tb絕招:

刪除內容、釋放空間但不刪除定義。與

drop

不同的是

,他只是清空表資料而已

,他比較溫柔

.同樣也是乙個班

,他只去除所有的學生

.班還在

,職務還在

,如果有新增的學生可以進去

,也可以分配上職務

刪除內容很容易理解

,不刪除定義也很容易理解

,就是保留表的資料結構

上圖就表現了

:刪除內容

執行語句之後

,發現資料表的結構還在

,也就是不刪除定義

至於釋放空間

,看下下面兩幅圖

.你們就會明白的

右圖:id

列標識列

,因之前

delete

過行資料

,所以會出現標識列不連續

(體現了

delete

刪除是不釋放空間的)經過

truncate table teacher

之後再新增三條資料

同樣id

是標識列

,發現插入資料的時候

,標識列連續了

(體現了

truncate

刪除是釋放空間)注意

:truncate

不能刪除行資料

,要刪就要把錶清空

老三

-----delete

出沒場合

:delete table tb   --

雖然也是刪除整個表的資料

,但是過程是痛苦的

(系統一行一行地刪

,效率較

truncate低)

或delete table tb where

條件絕招

:刪除內容不刪除定義,不釋放空間。三兄弟之中最容易欺負的乙個

然後關於

delete

的就不詳細說明了

,大家都懂的

關於truncate

的小小總結

:truncate table

在功能上與不帶

where

子句的delete

語句相同:二者均刪除表中的全部行。

但truncate

比delete

速度快,且使用的系統和事務日誌資源少。

delete

語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。所以可以對

delete

操作進行

roll back1、

truncate

在各種表上無論是大的還是小的都非常快。如果有

rollback

命令delete

將被撤銷,而

truncate 

則不會被撤銷。2、

truncate

是乙個ddl

語言,向其他所有的

ddl語言一樣,他將被隱式提交,不能對

truncate 

使用rollback

命令。3

、truncate 

將重新設定高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過

truncate 

操作後的錶比

delete

操作後的表要快得多。4、

truncate 

不能觸發任何

delete

觸發器。

5、當表被清空後表和表的索引講重新設定成初始大小,而

delete

則不能。

6、不能清空父表

delete和drop truncate的區別

1.truncate和不帶where子句的delete 以及drop都會刪除表內的資料。2.drop truncate都是ddl語句 資料定義語言 執行後會自動提交。1.truncate 和 delete 只刪除資料不刪除表的結構 定義 drop 語句將刪除表的結構被依賴的約束 constrain ...

drop truncate和delete的區別

delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。truncate table 則一次性地從表中刪除所有的資料並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。...

drop truncate和delete的區別

1 delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。truncate table 則一次性地從表中刪除所有的資料並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度...