mysql truncate语句_MySQL truncate table语句
在本教程中,您将学习如何使用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语句相关推荐
- mysql 建表语句示例_MySQL Create Table语句和示例
mysql 建表语句示例 In this article, I am going to explain the MySQL CREATE TABLE statement with examples. ...
- MySQL中定义fk语句_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (4)
外键和其他约束 InnoDB和NDB存储引擎支持 FOREIGN KEY 和 REFERENCES 子句,这些存储引擎实现了ADD [CONSTRAINT [symbol]] FOREIGN KEY ...
- mysql的crud语句_MySQL数据库CRUD语句快速入门
本文目录: Day11 SQL语句 sql语句,一种用于操作数据库的语言 数据库, 简单地理解为硬盘上的文件, 可以存放数据 sql 语句大致可以分类两大类 进入数据库的方法: 1. 命令行代码: 进 ...
- mysql show语句_mysql常用show语句
1. show character set [like 'pattern'] 显示所有可利用的字符集 mysql> show character set like 'gbk' -> ; + ...
- mysql使用语句_Mysql基本使用语句
数据库端口号:Mysql:3306 Orasle:1521 Sqlserver:1443 DML: 数据操作语言(检索或者修改数据) DDl:数据定义语言(定义数据结构,比如创建.修改或删除数据库的对 ...
- mysql checksum_mysql8 参考手册--CHECKSUM TABLE语句
CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED] CHECKSUM TABLE报告 表内容的校验和.您可以使用此语句来验证备份,回 ...
- mysql删除索引语句_MySQL:使用SQL语句删除所有索引
删除所有索引 可利用ALTER TABLE或DROP INDEX语句来删除索引.这里使用ALTER TABLE,首先查询所有索引,然后拼接成删除语句,复制执行即可 #拼接删除索引的语法 SELECT ...
- mysql事务控制(xa分布式事务)和锁定语句_MySQL的SQL语句 -事务性语句和锁定语句(7)- XA 事务...
XA 事务 InnoDB 存储引擎支持 XA 事务.MySQL XA 的实现基于 X/Open CAE 文档 Distributed Transaction Processing: The XA Sp ...
- mysql 存过 if语句_mysql存储过程 if 语句
MySql的存储过程 存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存 ...
- sql中的ignore语句_MySQL insert ignore语句
在本教程中,您将学习如何使用MySQL INSERT IGNORE语句将数据插入到表中. 1. MySQL INSERT IGNORE语句简介 当使用INSERT语句向表中添加一些行数据并且在处理期间 ...
最新文章
- Android之如何获取网络类型并判断是否可用
- 开始→运行→命令集锦
- 面向对象3(final、static、instanceof、向上/向下转型、初始化次序)
- webpack打包js文件
- SAP UI5 Dialog wrong location
- LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)
- 主流开源开发者工具落地阿里云,进一步提升开发者体验
- 保险条款精解(三) 撞车
- [Java] 蓝桥杯PREV-5 历届试题 错误票据
- python 插入查找
- java子窗口获取父窗口句柄_java获得窗口句柄
- php url中文转码
- idea中html导入背景图片,IDEA设置导入主题样式皮肤,加入背景图片
- 墨刀和axure你应该用哪个?
- 【传感器大赏】80cm红外距离传感器
- 扫雷c语言完整源代码,C语言扫雷源码
- CTF PWN-攻防世界XCTF新手区WriteUp
- 记录一下申请邓白氏编码的完整流程
- 企业项目文档库管理系统推荐
- 理解镜像、容器和存储驱动
热门文章
- mega linux教程,LINUX 安装MegaRAID Storage Manager (MSM)安装使用教程
- 如何破解无线网络密码(无线网络密码破解)
- python读取大智慧数据_大智慧数据格式
- 华硕笔记本k555拆机图解_华硕K43系列笔记本电脑拆机清灰图文超细版教程
- 惠普服务器做虚拟化,节省成本立竿见影 惠普虚拟化技术详解
- cutftp.exe
- JavaScript特效—滚动公告
- ubuntu安装rtx
- 在IIS6 配置使用php5.4的fastcgi模式
- 腾讯无线副总李颖:腾讯QQ游戏无线平台将亮相长城会