MySQL中的删除数据delete跟truncate
MySQL中的删除数据——delete和truncate ? ? ? 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句。 ? ? ? ? DELETE语句可以通过WHERE对要删除的记录进行选择。 ? ? ? TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更
MySQL中的删除数据——delete和truncate? ? ? 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是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语句不同,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;
?
本文摘自:http://blog.csdn.net/apache6/article/details/2778878
推荐阅读
-
MySQL删除表操作实现(delete、truncate、drop的区别)
-
oracle数据库删除数据Delete语句和Truncate语句的使用比较
-
删除mysql数据库中的重复数据记录
-
详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始
-
关于mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句的深入理解
-
mybatis mysql delete in操作只能删除第一条数据的方法
-
mysql数据库中drop、truncat、delete的用法区别讲解
-
Mysql清空表(truncate)与删除表中数据(delete)的区别
-
Python批量删除mysql中千万级大量数据的脚本分享
-
mysql删除表中重复数据,只保留一个最小的id的记录