前言
SQL语法中,DROP、DELETE、TRUNCATE都表示删除,下面对其进行区别
语法
1 | DROP TABLE 表名 |
区别
DROP(删除表) | DELETE(删除表中的数据) | TRUNCATE(删除表中的数据) |
---|---|---|
把整个表删除:包括被依赖的约束、触发器、索引;依赖于该表的存储过程、函数会保留,但状态变为 invalid | 删除表中的行,会把删除操作作为事务记录在日志中保存,以便进行回滚操作 | 删除内容,保留表的数据结构 |
作为外键的表,不能TRUNCATE,而应该使用不带 WHERE 的DELETE | ||
数据库定义语言(ddl) 操作立即生效 原数据不放到 rollback segment 中,不能回滚 操作不触发 trigger |
数据库操作语言(dml) 事务提交之后才生效 会放到 rollback segment 中,能回滚 操作执行时将触发 trigger |
数据库定义语言(ddl) 操作立即生效 原数据不放到 rollback segment 中,不能回滚 操作不触发 trigger |
执行速度:DROP > TRUNCATE > DELETE