MySQL DELETE語句和TRUNCATE TABLE語句功能類似,可是兩者究竟有何區別呢?排序
下文就將爲您分析MySQL DELETE語句和TRUNCATE TABLE語句的區別,供您參考。
table
在MySQL中有兩種方法能夠刪除數據,一種是MySQL DELETE語句,另外一種是MySQL TRUNCATE TABLE語句。方法
DELETE語句能夠經過WHERE對要刪除的記錄進行選擇。而使用TRUNCATE TABLE將刪除表中的全部記錄。所以,DELETE語句更靈活。
數據
若是要清空表中的全部記錄,可使用下面的兩種方法:
DELETE FROM table1
TRUNCATE TABLE table1
其中第二條記錄中的TABLE是可選的。
若是要刪除表中的部分記錄,只能使用DELETE語句。
DELETE FROM table1 WHERE ;
若是DELETE不加WHERE子句,那麼它和TRUNCATE TABLE是同樣的,但它們有一點不一樣,那就是DELETE能夠返回被刪除的記錄數,而TRUNCATE TABLE返回的是0。
若是一個表中有自增字段,使用TRUNCATE TABLE和沒有WHERE子句的DELETE刪除全部記錄後,這個自增字段將起始值恢復成1.若是你不想這樣作的話,能夠在DELETE語句中加上永真的WHERE,如WHERE 1或WHERE true。
DELETE FROM table1 WHERE 1;
上面的語句在執行時將掃描每一條記錄。但它並不比較,由於這個WHERE條件永遠爲true。這樣作雖然能夠保持自增的最大值,但因爲它是掃描了全部的記錄,所以,它的執行成本要比沒有WHERE子句的DELETE大得多。
DELETE和TRUNCATE TABLE的最大區別是DELETE能夠經過WHERE語句選擇要刪除的記錄。但執行得速度不快。並且還能夠返回被刪除的記錄數。而TRUNCATE TABLE沒法刪除指定的記錄,並且不能返回被刪除的記錄。但它執行得很是快。
和標準的SQL語句不一樣,MySQL DELETE語句支持ORDER BY和LIMIT子句,經過這兩個子句,咱們能夠更好地控制要刪除的記錄。如當咱們只想刪除WHERE子句過濾出來的記錄的一部分,可使用LIMIB,若是要刪除後幾條記錄,能夠經過ORDER BY和LIMIT配合使用。假設咱們要刪除users表中name等於"Mike"的前6條記錄。可使用以下的DELETE語句:
DELETE FROM users WHERE name = 'Mike' LIMIT 6;
通常MySQL並不肯定刪除的這6條記錄是哪6條,爲了更保險,咱們可使用ORDER BY對記錄進行排序。
DELETE FROM users WHERE name = 'Mike' ORDER BY id DESC LIMIT 6;
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。top