刪除數據庫表中數據有兩種方式:
第一種:delete from tablename where 1=1;
第二種:truncate table tablename;
區別是:第二種清空表數據比較及時,能夠很快地釋放數據庫表空間,而且不記錄刪除操作,自增字段還是從表建立的時候設置的初始值開始,
第一種方式下數據庫空間不一定能及時釋放出來,而且如果有identity字段,之后再插入數據也不會從定義的初始值開始自增。
注意:truncate 不能刪除行數據,要刪就要把表清空
delete 語句每次刪除一行,並在事務日志中為所刪除的每行記錄一項。所以可以對delete操作進行roll back
1、truncate 在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete將被撤銷,而 truncate 則不會被撤銷。
2、truncate 是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對 truncate 使用ROLLBACK命令。
3、truncate 將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過 truncate 操作后的表比Delete操作后的表要快得多。
4、truncate 不能觸發任何Delete觸發器。
5、當表被清空后表和表的索引講重新設置成初始大小,而delete則不能。
6、不能清空父表
注意:drop table tablename;是將表刪除,包括表中的內容,表的定義,數據庫表空間
參考:http://www.cr173.com/html/40708_1.html
