資料庫中truncate與delete的區別與聯絡

2022-04-15 09:42:33 字數 802 閱讀 6894

truncate table命令將快速刪除資料表中的所有記錄(保留資料表結構)。這種快速刪除與delete from 資料表的刪除全部資料表記錄不一樣,delete命令刪除的資料將儲存在系統回滾段中,需要的時候,資料可以回滾恢復,而truncate命令刪除的資料是不可以恢復的。咱們做乙個測試:

1、建乙個帶有自增字段的表,加入100萬資料

2、分別用truncate和delete刪除全部資料(分別執行delete from `tablename`; truncate from `tablename`;drop from `tablename`;)

3、然後再向表裡插入一條資料

最直觀是:

1、truncate table是非常快的

2、truncate之後的自增欄位從頭開始計數了,而delete的仍保留原來的最大數值

相同點:

truncate和不帶where子句的delete, 以及drop都會刪除表內的資料。

不同點:

1、truncate和delete只刪除資料不刪除表的結構,而drop語句不僅刪除全部資料還刪除了表的結構; 

2、delete操作會放到rollback segement中,事務提交之後才生效也就是可以回滾。而truncate,drop操作之後原資料不放到rollback segment中,不能回滾

3、delete語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動,也就是自增id不變化

4、速度,一般來說: drop>; truncate >; delete

資料庫中truncate與delete的區別

而delete和truncate table都是刪除表中的資料的語句,它們的不同之處在於 1 truncate table比delete的速度快 2 truncate table 是刪除表的所有行,而delete是刪除表的一行或者多行 除非delete不帶where語句 3 在刪除時如果遇到任何一行...

資料庫中 與 區別

mybatis 4 原sql語句 sql view plain copy deletefromups role permission dataparams whererole id 在這裡用到了 使用 時 1 用來傳入引數,sql在解析的時候會加上 當成字串來解析 如這裡 role id rolei...

用命令建立MySQL資料庫 de1

一 連線mysql 格式 mysql h主機位址 u使用者名稱 p使用者密碼 1 連線到本機上的mysql。首先開啟dos視窗,然後進入目錄mysql bin,再鍵入命令mysql u root p,回車後提示你輸密碼.注意使用者 名前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸...