zoukankan      html  css  js  c++  java
  • 关于MySQL中的TRUNCATE语句

    语法

    TRUNCATE [table_name];
    

    作用

    快速清空一张表,在逻辑功能上相当于删除所有行的DELETE语句;

    原理

    实际上是先将表DROP,再重新创建一个表名相同的空数据表;

    与DELETE语句的主要区别:

    • 对于innoDB的存储引擎来说,因为innoDB是支持外键约束的,所以在有外键限制的情况下执行TRUNCATE TABLE语句时会将其映射到DELETE语句上;否则使用快速删减。重新设置AUTO_INCREAMENT计数器,这个时候不需要考虑外键的约束。
    • 对于其他引擎来说,主要有以下区别:
      1. TRUNCATE会删除取消原表并创建一个空表,速度上比DELETE一行一行删除快速。
      2. TRUNCATE不能保证对事务安全;对于事务处理与表锁定的处理会发生错误。
      3. 使用TRUNCATE不能返回被删除行的数目。
      4. 只要创建表有正确的定义表结构,那么这个表不论是数据破坏或者索引文件丢失,都可以使用TRUNCATE再重新把表创建为一张空表。
      5. 管理表的程序不会记得最后的AUTO_INCREMENT的值,但是AUTO_INCREMENT总会从头开始进行计数。
      6. 当TRUNCATE作用于带分区的表时,表的数据和索引文件会被删除并且重新创建表,且分区定义文件不会受到影响。
  • 相关阅读:
    java 项目的CAS搭建
    OpenStack Grizzly版本(Ubuntu 12.04)配置
    存储介质管理
    软件包管理
    终端和键盘
    Shell环境(environment)和配置(configuration)
    Linux 基本命令入门
    iptables的原理及使用
    移动小球 (sicily 1934) (双向链表)
    1010 Tempter of the Bone (杭电) (图Graph)
  • 原文地址:https://www.cnblogs.com/pufa/p/13913673.html
Copyright © 2011-2022 走看看