MySQL——添加、更新于删除数据(三)删除数据(3)使用关键字 TRUNCATE 删除表中数据

        在 MySQL数据库中,还有一种方式可以用来删除表中所有的记录,这种方式需要用到一个关键字 TRUNCATE,其语法格式如下:

TEUNCATE [TABLE] 表名

        TRUNCATE的语法格式很简单,只需要通过 “ 表名 ” 指定要执行删除操作的表即可。下面通过一个案例来演示 TRUNCEATE 的用法。

        例如,在数据库 chapter03 中创建一张表 tab_truncate,创建 tab_truncate 表的SQL 语句如下所示:

mysql> CREATE TABLE tab_truncate(
    -> Id INT(3) PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(4)
    -> );
Query OK, 0 rows affected, 0 warning (0.02 sec)

       在创建的 tab_truncate 表中,id 字段值设置了 AUTO_INCREMENT,在每次添加记录时系统会为该字段自动添加值,id 字段的默认初始值是1,每添加一条记录,该字段值会自动加1。接下来向 tab_truncate 表中添加 5 条记录,且只添加 name 字段的值 SQL 语句如下所示:

mysql> INSERT INTO tab_truncate(name)
    -> VALUES('A'),('B'),('C'),('D'),('E');
Query OK, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0

        执行 INSERT 语句向 tab_truncate 表中添加 5 条记录,接下来通过查询语句查看数据是否成功添加,执行结果如下所示:

mysql> select * from tab_truncate;
+----+------+
| Id | name |
+----+------+
|  1 | A    |
|  2 | B    |
|  3 | C    |
|  4 | D    |
|  5 | E    |
+----+------+
5 rows in set (0.00 sec)

        从查询结果可以看出,tab_truncate表中添加了 5 条记录,且系统自动为每条记录的 id 字段添加了值。接下来使用 TRUNCATE 语句删除 tab_truncate 表中的所有记录 TRUNCATE 语句如下所示:

TRUNCATE TABLE tab_truncate;

        执行结果如下所示:

mysql> TRUNCATE TABLE tab_truncate;
Query OK, 0 rows affected (0.01 sec)

        从执行结果可以看到 TRUNCATE 语句成功执行,接下来通过查询语句查看 tab_truncate 表中的记录是否删除成功,执行语句如下所示:

mysql> select * from tab_truncate;
Empty set (0.00 sec)

        通过查询结果可以看到记录为空,说明 tab_truncate 表中的记录被全部删除了。TRUNCATE语句和 DETELE 语句都能实现删除表中的所有数据的功能,但两者也有一定的区别,下面就针对两者的区别进行说明。

        (1)DELETE 语句是 DML语句,TRUNCATE语句通常被认为是 DDL 语句。

        (2)DELETE语句后面可以跟 WHERE 子句,通过指定 WHERE 子句中的条件表达式只删除满足条件的部分记录,而 TRUNCATE语句只能用于删除表中的所有记录。

        (3)使用TRUNCATE语句删除表中的数据后,再次向表中添加记录时,自动增加字段的默认初始值重新由1开始,而使用 DELETE语句删除表中所有记录后,再次向表中添加记录时,自动增加字段的值为删除时该字段的最大值加 1。

        例如,在空表 tab_truncate 中,重新添加 5 条记录,SQL语句如下

mysql> INSERT INTO tab_truncate(name)
    -> VALUES('F'),('G'),('H'),('I'),('J');
Query OK, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0

        执行 INSERT 语句向 tab_truncate 表中添加 5 条记录,使用查询语句查看表中的记录,执行结果如下所示:

mysql> select * from tab_truncate;
+----+------+
| Id | name |
+----+------+
|  1 | F    |
|  2 | G    |
|  3 | H    |
|  4 | I    |
|  5 | J    |
+----+------+
5 rows in set (0.00 sec)

        从查询结果可以看出,系统为 tab_truncate 表中 id 字段默认添加了值,初始值从 1 开始。接下来使用 DELETE 语句删除 tab_truncate 表中的所有记录,DELETE语句如下所示:

mysql> DELETE FROM tab_truncate;
Query OK, 5 rows affected (0.00 sec)

        执行 DELETE 语句删除 tab_truncate 表中全部记录,然后向表中添加一条新记录 SQL 语句如下所示:

mysql> INSERT INTO tab_truncate(name) VALUES('K');
Query OK, 1 row affected (0.01 sec)

        执行 INSERT 语句向 tab truncate表中添加一条记录,再次使用查询语句查看表中的记录,SQL语句如下所示:

mysql> select * from tab_truncate;
+----+------+
| Id | name |
+----+------+
|  6 | K    |
+----+------+
1 row in set (0.00 sec)

        从查询结果可以看到,新添加记录的 id 字段为 6,这是因为在使用 DELETE 语句删除的 5 条记录中,id 字段的最大值为5,因此再次添加记录时,新记录的 id 字段值就为 5+1。

        (4)使用 DELETE 语句时,每删除一条记录都会在日志中记录,而使用TRUNCATE语句时,不会在日志中记录删除的内容,因此TRUNCATE语句的执行效率比 DELETE 语句高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code repairman

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值