在MySQL
中刪除資料有兩種方式:
1、truncate
(截短)屬於粗型的清空
2、delete
屬於精細化的刪除
#刪除操作
##如果你需要清空表裡的所有數據,下面兩種都可以:delete from tablename; truncate table tablename;而如果你只是刪除一部分數據,就只能使用
delete:
delete from tablename where case1 and case2;
區別
在精細化的刪除部分資料時,只能使用delete。
#1、傳回值
##truncate傳回值為0
,而delete
會傳回已刪除的記錄數<pre class="brush:php;toolbar:false">mysql> truncate serviceHost;
Query OK, 0 rows affected (0.04 sec)
mysql> delete from serviceHost where creator='test';
Query OK, 4 rows affected (0.01 sec)</pre>
如果表中有自增字段,
truncate會重置為1
,而delete
會保持自增的最大值。
truncate
不掃描表,相當於重新建立了表,只保留了表的結構,然後刪除掉原有表,效率非常高。 delete
會掃描全表,根據where
語句做判斷,因此效率低。
truncate
不寫伺服器日誌,無法復原。 delete
會寫伺服器日誌。
truncate
不啟動觸發器,delete
會啟動觸發器。 推薦學習:
以上是淺談mysql清空表資料的兩種方式和區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!