delete | truncate |
---|---|
数据操作语言 | 数据定义语言 |
操作表中的一条或多条记录 | 删除数据库中的所有的记录以及表的结构 |
delete命令采用行级锁定,表中的每一行都被锁定以进行删除 | truncate命令采用表级锁定,锁定了整个表以删除所有记录 |
truncate与drop的区别:
1.delete是DML语句,不会自动提交。drop/truncate都是DDL语句,执行后会自动提交。
2.TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。(这个可以适用于想要重新主键从新开始计数)
3.drop 语句将表所占用的空间全部释放。truncate 会将高水线复位(回到最开始)。