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语句将表所占用的空间全释放掉。
 


posted @ 2024-03-14 11:41  中仕  阅读(298)  评论(0编辑  收藏  举报