首頁 >資料庫 >mysql教程 >淺談mysql清空表資料的兩種方式和區別

淺談mysql清空表資料的兩種方式和區別

青灯夜游
青灯夜游轉載
2019-11-27 17:43:212756瀏覽

淺談mysql清空表資料的兩種方式和區別

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&gt; truncate serviceHost; Query OK, 0 rows affected (0.04 sec) mysql&gt; delete from serviceHost where creator='test'; Query OK, 4 rows affected (0.01 sec)</pre>

#2、自增欄位

如果表中有自增字段,

truncate

會重置為1,而delete會保持自增的最大值。

3、執行效率

truncate

不掃描表,相當於重新建立了表,只保留了表的結構,然後刪除掉原有表,效率非常高。 delete
會掃描全表,根據where語句做判斷,因此效率低。

4、操作日誌

truncate

不寫伺服器日誌,無法復原。 delete
會寫伺服器日誌。

5、觸發器

truncate

不啟動觸發器,delete會啟動觸發器。 推薦學習:

MySQL教學

以上是淺談mysql清空表資料的兩種方式和區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除