2025-05-22 00:30:49
2018世界杯足球
一、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语句将表所占用的空间全释放掉。