關於SQL刪除語句TRUNCATE和DELETE

2022-07-16 07:27:08 字數 1638 閱讀 9126

truncate操作同沒有where條件的delete操作十分相似。

1、無論truncate大表還是小表速度都非常快。delete要產生回滾資訊來滿足回滾需求,而truncate是不產生的。

2、truncate是ddl語句進行隱式提交,不能進行回滾操作。

3、truncate重新設定表和索引的hwm(高水標記),由於全表掃瞄和索引快速掃瞄都要讀取所有的資料塊知道hwm為止。所以全表掃瞄的效能不會因為delete而提高,但是經過truncate操作後速度會很快。

4、truncate不觸發任何delete觸發器。

5、不能賦給某個使用者truncate其它使用者表的許可權。如果需要trucate其它使用者表的許可權必須對該使用者賦drop any table許可權。

6、當表被truncate後,這個表和索引所占用的空間會恢復到初始大小,而delete操作不會減少表或索引所占用的空間。

7、不能truncate乙個帶有外來鍵的表,如果要刪除首先要取消外來鍵,然後再刪除。

truncate和delete有以下幾點區別

1、truncate在各種表上無論是大的還是小的都非常快。如果有rollback命令delete將被撤銷,而truncate則不會被撤銷。

2、truncate是乙個ddl語言,向其他所有的ddl語言一樣,他將被隱式提交,不能對truncate使用rollback命令。

3、truncate將重新設定高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過truncate操作後的錶比delete操作後的表要快得多。

4、truncate不能觸發任何delete觸發器。

5、不能授予任何人清空他人的表的許可權。

6、當表被清空後表和表的索引講重新設定成初始大小,而delete則不能。

7、不能清空父表。 truncate table (schema)table_name drop(reuse) storage 在預設是 drop storage 當使用drop storage時將縮短表和表索引,將表收縮到最小範圍,並重新設定next引數。reuse storage不會縮短表或者調整next引數在特殊情況下使用 reuse st

delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。

truncate table 則一次性地從表中刪除所有的資料頁並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。

truncate 是將你的表初始化。假如現在你的表中有10條資料,現在truncate table 的話,就會將表還原為你最初剛建立好時的狀態。錶剛建立好時肯定是沒有任何資料。因此資料就都沒有了。

delete table雖然也將你表中的資料清除,但是在你的事務日誌檔案(ldf)裡,還會有相應的記錄。沒有徹底刪除。並且delete table 還可以刪除指定列,比如我想刪除id為1的列。就可以寫: delete 表名 where id=1

簡單說:

truncate 刪除資料表的結構

delete 刪除資料表的資料 結構還在

如為字段設定了標識列 identity(1,1)

truncate 刪除資料後 再新增資料 就從1開始自增

delete 刪除資料後 再新增資料 原來的使用的就不能再用了 也就是不是從1開始了 因為原來的占用了

SQL刪除語句

如果我們要刪除資料庫中表的資料,我們就可以使用delete語句。delete語句的基本語法是 delete from 表名 where 例如,我們想刪除employees表中id 100的記錄,就需要這麼寫 delete from employees where employee id 100 查詢...

關於sql語句

1.檢視所有資料庫 show databases 2.檢視當前使用的資料庫 select database 3.建立資料庫 create databases 資料庫名 charse4.刪除資料庫 drop database 資料庫名5.使用資料句庫 use database 資料庫名6.檢視資料庫中...

SQL刪除語句用法

一 drop 語法 drop table tablename 作用 刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增資料是不可能的,除非新增乙個表 二 truncate 語法 truncate table tablename 作用 刪除內容 釋放空間但不刪除定義。與drop不同的是,他...