mysql 删除表记录 delete和truncate table区别
MySQL中删除表记录delete from和truncate table的用法区别:
mysql中有两种删除表中记录的方法:
(1)delete from语句,
(2)truncate table语句。
delete from语句可以使用where对要删除的记录进行选择。delete语句更灵活。
truncate table将删除表中的所有记录。
情况一:清空表中的所有记录,可以使用下面的两种方法:
delete from tablename
truncate table tablename
其中第二条记录中的table是可选的。
情况二:删除表中的部分记录,只能使用delete语句。
delete FROM table1 WHERE ;
区别:
(1)如果delete不加WHERE子句,那么它和truncate table是一样的,但它们有一点不同,那就是delete可以返回被删除的记录数,而truncate table返回的是0。
(2)如果一个表中有自增字段,使用truncate table和没有WHERE子句的delete删除所有记录后,这个自增字段将起始值恢复成1.如果你不想这样做的话,可以在delete语句中加上永真的WHERE,如WHERE 1或WHERE true。
delete FROM table1 WHERE 1;
上面的语句在执行时将扫描每一条记录。但它并不比较,因为这个WHERE条件永远为true。这样做虽然可以保持自增的最大值,但由于它是扫描了所有的记录,因此,它的执行成本要比没有WHERE子句的delete大得多。
(3)还有一点就是,如果要删除表中的所有数据,建议使用truncate table, 尤其是表中有大量的数据, 使用truncate table是将表结构重新建一次速度要比使用delete from快很多,而delete from是一行一行的删除,速度很慢.
总结:
delete和truncate table的最大区别是delete可以通过WHERE语句选择要删除的记录。但执行得速度不快。而且还可以返回被删除的记录数。而truncate table无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。
delete :
与标准的SQL语句不同,delete支持ORDER BY和LIMIT子句。
delete FROM users WHERE name = 'nike' ORDER BY id DESC LIMIT 6;
最新文章
- svn error
- 数据结构--树状数组(黑龙江省第八届大学生程序设计竞赛--post office)
- Android IOS WebRTC 音视频开发总结(三五)-- chatroulette介绍
- 【C语言】-循环结构-for语句
- 高效算法——G - 贪心
- discuz清空session,导致session保存机制失败,session无法更新与解决
- SQL执行过程中的性能负载点
- JDBC+Servlet+jsp(增删查改)
- Java面向对象进阶篇(内部类)
- 19.python的序列化
- Python开发——10.面向对象编程进阶
- Netty 系列二(传输).
- JEECG 不同(角色的)人对同样的字段数据,使用不同的字段验证规则
- 教你如何在win7中的cygwin64下安装hadoop
- JS设计模式(11)中介者模式
- IOS HTML5页面中数字自动变蓝并识别为手机号
- 【iCore4 双核心板_FPGA】例程七:状态机实验——状态机使用
- Oracle中空值与数字相加问题
- 【jQuery】Deferred(延迟)对象
- 解读python手册的例子a, b = b, a+b