drop,truncate,delete都可以删除表内容,要想很清楚地区分这几个区别,要从下面几点入手:
1. 语言
DROP: 属于DDL语言;
TRUNCATE:属于DDL语言;
DELETE: 属于DML语言。
2. 删除对象
DLELTE: 删除表中一条或多条记录,只删除记录保留表的结构(删除的是记录);
TRUNCATE: 删除表中所有的记录,也是只删除记录保留表的结构(删除的是记录);
DROP: 删除的是整个表,包括表中的记录和表的结构(删除的是表)。
3.应用范围
TRUNCATE : 删除表(table);
DELETE: 删除表(table)和视图(view);
DROP: 删除表(table)和视图(view)
4.释放空间
DELETE: 删除记录后,不会减少表所占的空间;
TRUNCATE: 删除表后,表所占的空间可以恢复到初始大小;
DROP: 删除表后,所占的空间全部被释放
5.提交事务
DELETE: 将删除操作作为事务记录在日志中保存以便进行回滚操作(DELETE属于DML语言,需要显示提交,也就是手动提交)。
TRUNCATE: 不把删除操作记录记入日志保存,删除的记录是不能恢复的(之所以不能恢复,是因为DDL语言会隐性提交,提交完就不可以进行回滚操作了)。
DROP: 删除的表不能够进行回滚操作(同样是因为DDL语言,隐性提交)。
6.运行速度
在速度上,一般来说,drop> truncate > delete。