truncate与delete的区别

删 除 数 据
删除表中数据的方法有两种,在指定的表或视图中删除满足给定条件的数据可以使用DELETE语句;如果要清除表中全部数据,则还可以使用TRUNCATE TABLE语句.DELETE语句的语法如下.
命令格式:
DELETE[ FROM ] { table_name | view_name }
[ FROM { }]
[ WHERE ]
命令说明:
(1)DELETE语句中的语法项目含义与UPDATE语句相同.
(2)WHERE子句给出删除数据所必须满足的条件,省略WHERE子句时将删除所有数据.
TRUNCATE TABLE语句用于清空表中所有数据,语法如下.
命令格式:
TRUNCATE TABLE table_name
TRUNCATE TABLE table_name与DELETE table_name都可以删除表中全部记录.
二者的相同点是都不删除表的结构,索引,约束,规则和默认,如果希望删除表的定义,必须使用DROP TABLE语句.TRUNCATE TABLE语句与DELETE语句的区别是,如果表中含有自动编号列,则使用TRUNCATE TABLE语句后,该列将复位为其初始seed值(经本人验证通过SEQUENCE和TRIGGER实现的自动增加列是无法回复到SEQUENCE的初始值的,给大家带来的误解,深表歉意),而使用DELETE语句将不会复位.另外,使用TRUNCATE TABLE语句不记录日志,而DELETE语句每删除一条记录,都要记入日志,因此TRUNCATE TABLE语句的操作速度要快于DELETE语句.
----------------------------------------------------------------------------------------------------------------------------------
普通方法:delete   from   tablename   where...
快速删除表中所有记录   truncate   table   tablename
但后者不触发表delete触发器,所在的删除动作不能事务回滚

经本人验证通过SEQUENCE和TRIGGER实现的自动增加列是无法回复到SEQUENCE的初始值的,给大家带来的误解,深表歉意



开心过好每一天。。。。。