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

青灯夜游
發布: 2019-11-27 17:43:48
轉載
2734 人瀏覽過

淺談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會傳回已刪除的記錄數<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">登入後複製</div></div>

#2、自增欄位

如果表中有自增字段,

truncate

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

3、執行效率

truncate

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

4、操作日誌

truncate

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

5、觸發器

truncate

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

MySQL教學

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

來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板