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語句清空的表的定義與其索引和其他關聯對象一起保留在數據庫中。