在本教程中,您将学习如何使用MySQL TRUNCATE TABLE语句删除表中的所有数据。

MySQL TRUNCATE TABLE语句简介

MySQL TRUNCATE TABLE语句允许您删除表中的所有数据。 因此,在功能方面,TRUNCATE TABLE语句就像没有WHERE子句的DELETE语句。 但是,在某些情况下,MySQL TRUNCATE TABLE语句比DELETE语句更有效。

MySQL TRUNCATE TABLE语句的语法如下:

TRUNCATE TABLE table_name;

在TRUNCATE TABLE子句后面指定要删除所有数据的表名称。

TABLE关键字是可选的。 但是,应该使用它来区分TRUNCATE TABLE语句和TRUNCATE函数。

如果您使用InnoDB表,MySQL将在删除数据之前检查表中是否有可用的外键约束。 以下是一些情况:

如果表具有任何外键约束,则TRUNCATE TABLE语句会逐个删除行。如果外键约束具有DELETE CASCADE动作,则子表中的相应行也将被删除。

如果外键约束没有指定DELETE CASCADE动作,则TRUNCATE TABLE将逐个删除行,并且遇到由子表中的行引用的行时,它将停止并发出错误。

如果表没有任何外键约束,则TRUNCATE TABLE语句将删除该表并重新创建一个具有相同结构的新表,这比使用DELETE语句特别是对于大表更快更有效。

如果您使用其他存储引擎,则TRUNCATE TABLE语句将删除并重新创建一个新表。

请注意,如果表具有AUTO_INCREMENT列,则TRUNCATE TABLE语句将自动递增值重置为零。

此外,TRUNCATE TABLE语句不使用DELETE语句,因此与表关联的DELETE触发器将不被调用。

MySQL TRUNCATE TABLE示例

首先,创建一个名为books的新表:

CREATE DATABASE IF NOT EXISTS testdb;

USE testdb;

CREATE TABLE books(

id int auto_increment primary key,

title varchar(255) not null

)ENGINE=InnoDB;

接下来,使用以下存储过程填充books表的数据:

DELIMITER $$

CREATE PROCEDURE load_book_data(IN num int(10))

BEGIN

DECLARE counter int(10) default 0;

DECLARE book_title varchar(255) default '';

WHILE counter < num DO

SET book_title = concat('Book title #',counter);

SET counter = counter + 1;

INSERT INTO books(title) VALUES(book_title);

END WHILE;

END$$

DELIMITER ;

-- DROP PROCEDURE load_book_data;

然后,将10,000行数据插入到books表,执行上面语句将需要一段时间。

CALL load_book_data(10000);

执行上面语句之后,查看books表中的数据:

SELECT * FROM books;

最后,使用TRUNCATE TABLE语句来与DELETE语句相比执行的速度。

select now() as start_time;

TRUNCATE TABLE books;

select now() as end_time;

上面语句执行结果,如下所示 -

mysql> select now() as start_time;

TRUNCATE TABLE books;

select now() as end_time;

+---------------------+

| start_time |

+---------------------+

| 2017-07-24 21:31:07 |

+---------------------+

1 row in set

Query OK, 0 rows affected

+---------------------+

| end_time |

+---------------------+

| 2017-07-24 21:31:08 |

+---------------------+

1 row in set

可以看到整个过程也就差不多 1 秒钟完成,下面再次调用CALL load_book_data(10000);,完成插入数据后使用DELETE语句,查看执行的时间 -

select now() as start_time;

DELETE FROM books;

select now() as end_time;

执行上面语句,得到以下结果 -

mysql> select now() as start_time;

DELETE FROM books;

select now() as end_time;

+---------------------+

| start_time |

+---------------------+

| 2017-07-24 21:39:42 |

+---------------------+

1 row in set

Query OK, 10000 rows affected

+---------------------+

| end_time |

+---------------------+

| 2017-07-24 21:39:44 |

+---------------------+

1 row in set

在本教程中,我们向您展示了如何使用MySQL TRUNCATE TABLE语句从表中有效地删除所有数据,特别是对于拥有大量数据的表。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

mysql truncate语句_MySQL truncate table语句相关推荐

  1. mysql 建表语句示例_MySQL Create Table语句和示例

    mysql 建表语句示例 In this article, I am going to explain the MySQL CREATE TABLE statement with examples. ...

  2. MySQL中定义fk语句_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (4)

    外键和其他约束 InnoDB和NDB存储引擎支持 FOREIGN KEY 和 REFERENCES 子句,这些存储引擎实现了ADD [CONSTRAINT [symbol]] FOREIGN KEY ...

  3. mysql的crud语句_MySQL数据库CRUD语句快速入门

    本文目录: Day11 SQL语句 sql语句,一种用于操作数据库的语言 数据库, 简单地理解为硬盘上的文件, 可以存放数据 sql 语句大致可以分类两大类 进入数据库的方法: 1. 命令行代码: 进 ...

  4. mysql show语句_mysql常用show语句

    1. show character set [like 'pattern'] 显示所有可利用的字符集 mysql> show character set like 'gbk' -> ; + ...

  5. mysql使用语句_Mysql基本使用语句

    数据库端口号:Mysql:3306 Orasle:1521 Sqlserver:1443 DML: 数据操作语言(检索或者修改数据) DDl:数据定义语言(定义数据结构,比如创建.修改或删除数据库的对 ...

  6. mysql checksum_mysql8 参考手册--CHECKSUM TABLE语句

    CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED] CHECKSUM TABLE报告 表内容的校验和.您可以使用此语句来验证备份,回 ...

  7. mysql删除索引语句_MySQL:使用SQL语句删除所有索引

    删除所有索引 可利用ALTER TABLE或DROP INDEX语句来删除索引.这里使用ALTER TABLE,首先查询所有索引,然后拼接成删除语句,复制执行即可 #拼接删除索引的语法 SELECT ...

  8. mysql事务控制(xa分布式事务)和锁定语句_MySQL的SQL语句 -事务性语句和锁定语句(7)- XA 事务...

    XA 事务 InnoDB 存储引擎支持 XA 事务.MySQL XA 的实现基于 X/Open CAE 文档 Distributed Transaction Processing: The XA Sp ...

  9. mysql 存过 if语句_mysql存储过程 if 语句

    MySql的存储过程 存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存 ...

  10. sql中的ignore语句_MySQL insert ignore语句

    在本教程中,您将学习如何使用MySQL INSERT IGNORE语句将数据插入到表中. 1. MySQL INSERT IGNORE语句简介 当使用INSERT语句向表中添加一些行数据并且在处理期间 ...

最新文章

  1. Android之如何获取网络类型并判断是否可用
  2. 开始→运行→命令集锦
  3. 面向对象3(final、static、instanceof、向上/向下转型、初始化次序)
  4. webpack打包js文件
  5. SAP UI5 Dialog wrong location
  6. LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)
  7. 主流开源开发者工具落地阿里云,进一步提升开发者体验
  8. 保险条款精解(三) 撞车
  9. [Java] 蓝桥杯PREV-5 历届试题 错误票据
  10. python 插入查找
  11. java子窗口获取父窗口句柄_java获得窗口句柄
  12. php url中文转码
  13. idea中html导入背景图片,IDEA设置导入主题样式皮肤,加入背景图片
  14. 墨刀和axure你应该用哪个?
  15. 【传感器大赏】80cm红外距离传感器
  16. 扫雷c语言完整源代码,C语言扫雷源码
  17. CTF PWN-攻防世界XCTF新手区WriteUp
  18. 记录一下申请邓白氏编码的完整流程
  19. 企业项目文档库管理系统推荐
  20. 理解镜像、容器和存储驱动

热门文章

  1. mega linux教程,LINUX 安装MegaRAID Storage Manager (MSM)安装使用教程
  2. 如何破解无线网络密码(无线网络密码破解)
  3. python读取大智慧数据_大智慧数据格式
  4. 华硕笔记本k555拆机图解_华硕K43系列笔记本电脑拆机清灰图文超细版教程
  5. 惠普服务器做虚拟化,节省成本立竿见影 惠普虚拟化技术详解
  6. cutftp.exe
  7. JavaScript特效—滚动公告
  8. ubuntu安装rtx
  9. 在IIS6 配置使用php5.4的fastcgi模式
  10. 腾讯无线副总李颖:腾讯QQ游戏无线平台将亮相长城会