詳解資料庫三種刪除方法: 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語句清空的表的定義與其索引和其他關聯物件一起保留在資料庫中。