|
|
TRUNCATE 语句可以用来清空一个表格里面的数据.
跟使用 DELETE
语句来删除所有行相似, 又或者也跟 DROP TABLE
+ CREATE TABLE
连用的效果相似.
为了达到更高的性能, 它绕过了那些删除数据的 DML(数据操纵语言).
尽管跟 DELETE
相似, 不过, 它是被归类为 DDL(数据定义语言), 在 MySQL 5.6 中, 和 DELETE
语句的区别如下:
- Truncate 操作是直接 drop 了以后重新 create 的, 比一条一条的删除快得多, 尤其数据表非常大的时候更明显.
- Truncate 操作是不能被回滚的.
- 被锁着表不能执行 Truncate 操作
- Truncate 操作不会返回一个数值表示有多少行被删除了. 通常返回的结果都是
0 rows affected
- 所有的
AUTO_INCREMENT
的值都会被重置为起始值. - Truncate 操作不会调用 ON DELETE 触发器 (对触发器不熟悉 = . =)
- 如果数据表有外键约束是不能执行 Truncate 操作的.