詳解數據庫三種刪除方法: delete drop truncate


Delete

Delete :刪除數據表中的行(可以刪除某一行,也可以在不刪除數據表的情況下刪除所有行)。

刪除某一行:Delete from 數據表名稱 where 列名稱=值;

刪除所有行:Delete * from 數據表名稱

 

Drop

Drop :刪除數據表或數據庫,或刪除數據表字段。

刪除數據庫:drop database 數據庫名稱

刪除數據表:(表的結構、屬性、索引也會被刪除)

                 use 數據庫名稱

                 drop table 數據表1名稱,數據表2名稱

刪除數據表字段(列):

                 use 數據庫名稱

                 alter table 數據表名稱

                 drop column 字段名(列名稱)

 

Truncate

Truncate:刪除數據表中的數據(僅數據表中的數據,不刪除表)。

               truncate table 數據表名稱

              “ TRUNCATE TABLE語句是一種快速、無日志記錄的方法。TRUNCATE TABLE語句與不含有 WHERE 子句的 DELETE 語句在功能上相同。但是,TRUNCATE TABLE語句速度更快,並且使用更少的系統資源和事務日志資源。”

 

比較

刪除數據的速度,一般來說: drop> truncate > delete

“與 DELETE 語句相比,TRUNCATE TABLE語句具有以下優點:所用的事務日志空間較少。

DELETE 語句每次刪除一行,並在事務日志中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放用於存儲表數據的數據頁來刪除數據,並且在事務日志中只記錄頁釋放。使用的鎖通常較少。當使用行鎖執行 DELETE 語句時,將鎖定表中各行以便刪除。TRUNCATE TABLE 始終鎖定表和頁,而不是鎖定各行。如無例外,在表中不會留有任何頁。

執行 DELETE 語句后,表仍會包含空頁。例如,必須至少使用一個排他 (LCK_M_X) 表鎖,才能釋放堆中的空表。如果執行刪除操作時沒有使用表鎖,表(堆)中將包含許多空頁。對於索引,刪除操作會留下一些空頁,盡管這些頁會通過后台清除進程迅速釋放。

與 DELETE 語句相同,使用 TRUNCATE TABLE語句清空的表的定義與其索引和其他關聯對象一起保留在數據庫中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM