黑马程序员技术交流社区
标题:
数据库删除数据
[打印本页]
作者:
翟盼盼
时间:
2013-3-9 14:42
标题:
数据库删除数据
truncate 和delete在删除数据的时候有什么不同? 求解释
作者:
李晓泉
时间:
2013-3-9 14:45
Delete:用于删除表中的行(注:可以删除某一行;也可以在不删除表的情况下(即意味着表的结构、属性、索引完整)删除所有行)
Truncate:用于删除表内的数据(注:仅删除表内的数据,不删除表本身,相当于Delete语句不写Where子句一样)
作者:
张洪慊
时间:
2013-3-9 14:51
http://technet.microsoft.com/zh-cn/library/ms177570.aspx看下这个
还有 别忘了 强大的 联机丛书,没有什么比上面的更权威,更详细了.
作者:
天行
时间:
2013-3-9 16:22
truncate 和delete
相同:1.二者均删除表中的全部行。
不同:1.truncate删除表比较快,但删除的数据不能恢复,只能删除表中的所有数据。2.delete删除比truncate慢,删除的数据可以恢复。3.delete from后面可以写 条件,truncate不可以。3.truncate在各种表上无论是大的还是小的都非常快。4.truncate是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对truncate使用roolback命令。5.truncate不能触发任何delete触发器。6.不能授予任何人清空他人的表的权限。7.当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。8.不能清空父表。
作者:
陈振宇
时间:
2013-3-9 18:51
truncate效果等同于不带where的delete,delete删除时要详细记录事务日志,而truncate只记录truncate操作,不记录具体数据操作,所以truncate操作要比delete快得多但是一旦用了truncate很难进行数据库恢复。执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。若要删除表定义及其数据,请使用 DROP TABLE 语句。
如果表包含标识列,该列的计数器重置为该列定义的种子值。如果未定义种子,则使用默认值 1。若要保留标识计数器,请使用 DELETE。
作者:
HM张扬
时间:
2013-3-10 15:37
1.DELETE
・DML语言
・可以回退
・可以有条件的删除
DELETE FROM 表名
WHERE 条件
2.TRUNCATE TABLE
・DDL语言
・无法回退
・默认所有的表内容都删除
・删除速度比delete快。
作者:
luxun1912
时间:
2013-3-10 19:16
1、DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。
2、DELETE和TRUNCATE TABLE的最大区别是DELETE可以通过WHERE语句选择要删除的记录。但执行得速度不快。而且还可以返回被删除的记录数。而TRUNCATE TABLE无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。
3、DELETE FROM table1,清空了表里面的数据。TRUNCATE TABLE,将整个表给删除了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2