MySQL DELETE语句和TRUNCATE TABLif和case语句的区别别

sql使用truncate和delete清空table的区别
sql使用truncate和delete清空table的区别
初衷是一个有自加的主键id的表,已经有了很多调试数据,然后到了正式利用此表的时候,仅将这些数据删除,然而,id却会自动依照原有的进行自增,而不是从1自增,往往都是轻易上千的,老别扭了,扒拉好久sql书,发现truncate table tablename就可以实现id从1自增功能,现提供一些几点truncate(截断)与delete(删除)的区别:
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。 & &
3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
4、TRUNCATE不能触发任何DELETE触发器。
5、不能授予任何人清空他人的表的权限。
6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
7、不能清空父表。中国领先的IT技术网站
51CTO旗下网站
MySQL DELETE语句和TRUNCATE TABLE语句的区别
在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在。
作者:佚名来源:互联网| 16:05
MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语句和TRUNCATE TABLE语句的区别,供您参考。
在中有两种方法可以删除数据,一种是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;
【编辑推荐】
SQL设置自增字段的方法介绍
见MySql字段的默认长度
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条热点头条热点
24H热文一周话题本月最赞
讲师:92516人学习过
讲师:108847人学习过
讲师:17030人学习过
精选博文论坛热帖下载排行
本书第1版曾被KDnuggets的读者评选为最受欢迎的数据挖掘专著,是一本可读性极佳的教材。它从数据库角度全面系统地介绍了数据挖掘的基本概念...
订阅51CTO邮刊sqlserver中drop、truncate和delete语句的用法
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了sqlserver中drop、truncate和delete语句的用法,本文图文并茂,内容清晰,需要的朋友可以参考下
虽然小编不建议大家去用命令删除数据库表中的东西,但是这些删除命令总有用的着的地方。
说到删除表数据的关键字,大家记得最多的可能就是delete了
然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了
现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的
老大------drop
出没场合:drop table &tb&--tb表示数据表的名字,下同
绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表,
& & & &例如:一个班就是一个表,学生就是表中的数据,学生的职务就是定义
& & & &drop table class,就是把整个班移除.学生和职务都消失
比如下面TestSchool数据库中有两张表[Classes]表和[Teacher]表
当执行下面代码之后
Classes表就被清楚,一干二净! 删除得非常暴力,作为老大实至名归
老二-----truncate
出没场合:truncate table tb
绝招:删除内容、释放空间但不删除定义。与drop不同的是,他只是清空表数据而已,他比较温柔.
同样也是一个班,他只去除所有的学生.班还在,职务还在,如果有新增的学生可以进去,也可以分配上职务
删除内容很容易理解,不删除定义也很容易理解,就是保留表的数据结构
上图就表现了:删除内容
执行语句之后,发现数据表的结构还在,也就是不删除定义
至于释放空间,看下下面两幅图.你们就会明白的
右图:Id列标识列,因之前delete过行数据,所以会出现标识列不连续(体现了delete删除是不释放空间的)
经过truncate table Teacher 之后 再新增三条数据
右图:同样Id是标识列,发现插入数据的时候,标识列连续了(体现了truncate删除是释放空间)
注意:truncate 不能删除行数据,要删就要把表清空
老三-----delete
出没场合:delete table tb &&--虽然也是删除整个表的数据,但是过程是痛苦的(系统一行一行地删,效率较truncate低)
& & & & & & 或
& & & & & & delete table tb where 条件
绝招:删除内容不删除定义,不释放空间。三兄弟之中最容易欺负的一个
然后关于delete的就不详细说明了,大家都懂的
关于truncate的小小总结:
truncate table 在功能上与不带 WHERE 子句的 delete语句相同:二者均删除表中的全部行。
但 truncate 比 delete速度快,且使用的系统和事务日志资源少。
delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。所以可以对delete操作进行roll back
1、truncate 在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而&truncate&则不会被撤销。&
2、truncate 是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对&truncate&使用ROLLBACK命令。&
3、truncate&将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过&truncate&操作后的表比Delete操作后的表要快得多。&
4、truncate&不能触发任何Delete触发器。&
5、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。&
6、不能清空父表
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具提供主流cms教程
提供数据库教程和设计
提供各种常见网页js代码
提供常用的JS特效代码及在线演示
提供jQuery插件教程及插件下载
提供服务器常见问题及教程
提供站长技术、站长资讯等内容
提供常用开发手册和开发工具
您现在的位置:& >
mysql 中 delete from 表名和truncate table 表名的区别
导读:下面是delete from 表名和truncate table 表名方面的区别,供大家在删除数据表时作个参考了。1、delete不能使自动编号返回为起始值。但...
下面是delete from 表名和truncate table 表名方面的区别,供大家在删除数据表时作个参考了。1、delete不能使自动编号返回为起始值。但是truncate能使自动增长的列的值返回为默认的种子。2、truncate只能一次清空,不能按条件删除。但是delete可以按条件清除部分记录。3、truncate清空数据表性能(速度)比delete快。4、truncate不会记录到系统日志,不会触发delete触发器。
转载请注明(B5教程网)原文链接:
网友评论:2005年10月 总版技术专家分月排行榜第一2005年9月 总版技术专家分月排行榜第一2005年8月 总版技术专家分月排行榜第一
2005年10月 MS-SQL Server大版内专家分月排行榜第一2005年9月 MS-SQL Server大版内专家分月排行榜第一2005年8月 MS-SQL Server大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 sql语句大小写区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信