Drop和Delete和Truncate的区别

一、drop table和truncate table

1、drop和truncate都是DDL语言;

2、drop table是删除表,包括表的结构,数据,索引等所有信息;

3、TRUNCATE TABLE 仅仅删除表的所有记录,表的结构、索引、触发器、约束等将被保留,后续仍然可以使用该表;

二、truncat table和delete from table

1、delete是DML语句,删除表的数据,记录事务;

2、truncate是DDL语句,不记录事务;

3、TRUNCATE TABLE 还能重置具有自动递增(AUTO_INCREMENT)属性的字段,而 DELETE FROM TABLE却不具备该功能;

三、总结

1、truncate与不带where的delete :只删除数据,而不删除表的结构(定义);

2、drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid;

3、truncate、drop是DLL(data define language),操作立即生效,原数据不放到 rollback segment中,不能回滚;

4、TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE;

5、 应用范围。TRUNCATE 只能对TABLE;DELETE可以是table和view;

6、表和索引所占空间。当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,而DELETE操作不会减少表或索引所占用的空间。drop语句将表所占用的空间全释放掉。

Copyright © 2088 02年世界杯中国队_1930年乌拉圭世界杯 - n360l.com All Rights Reserved.
友情链接