萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql中刪除記錄TRUNCATE與DELETE區別

mysql中刪除記錄TRUNCATE與DELETE區別

我對於TRUNCATE與DELETE最基本的區別是delete刪除一個表中記錄或帶條件刪除記錄,刪除之後的自增ID下次不可能,但TRUNCATE只能清除整個表並且TRUNCATE刪除表中記錄了ID從1開始,下面具體的介紹他們的用法。

TRUNCATE用法

TRUNCATE [TABLE] tbl_name

我想刪除 friends 表中所有的記錄,可以使用如下語句:

truncate table friends;


DELETE用法

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name 
[WHERE where_definition] 
[ORDER BY ...] 
[LIMIT row_count]

多表語法:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] 
tbl_name[.*] [, tbl_name[.*] ...] 
FROM table_references 
[WHERE where_definition]

例子

DELETE FROM somelog 
WHERE user = 'jcole'
ORDER BY timestamp_column 
LIMIT 1;

同時刪除許多個表中的行,並使用其它的表進行搜索:

DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

或:

DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

TRUNCATE 命令與 DELETE 命令區別

1、TRUNCATE在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令DELETE將被撤銷,而TRUNCATE則不會被撤銷。
2、TRUNCATE是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對TRUNCATE使用ROLLBACK命令。
3、TRUNCATE將重新設置高水平線和所有的索引。在對整個表和索引進行完全浏覽時,經過TRUNCATE操作後的表比DELETE操作後的表要快得多。
4、TRUNCATE不能觸發任何DELETE觸發器。
5、不能授予任何人清空他人的表的權限。
6、當表被清空後表和表的索引講重新設置成初始大小,而delete則不能。
7、不能清空父表。

copyright © 萬盛學電腦網 all rights reserved