天天看點

資料庫删除語句 Drop/Delete/Truncate比較

Delete :删除資料表中的行(可以删除某一行,也可以在不删除資料表的情況下删除所有行)。

删除某一行:Delete from 資料表名稱 where 列名稱=值;

删除所有行:Delete * from 資料表名稱

Drop :删除資料表或資料庫,或删除資料表字段。

删除資料庫:drop database 資料庫名稱

删除資料表:(表的結構、屬性、索引也會被删除)

                 use 資料庫名稱

                 drop table 資料表1名稱,資料表2名稱

删除資料表字段(列):

                 use 資料庫名稱

                 alter table 資料表名稱

                 drop column 字段名(列名稱)

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

此部分轉自http://database.51cto.com/art/201009/226870.htm

remove :删除資料庫檔案

              alter database Mydatabase1

              remove file Mydatabase1_log              

轉載于:https://www.cnblogs.com/YuanSong/archive/2012/10/08/2715244.html