首页 > 数据库 >MySQL——删除数据(三)使用关键字 TRUNCATE 删除表中数据

MySQL——删除数据(三)使用关键字 TRUNCATE 删除表中数据

时间:2024-08-13 10:24:39浏览次数:16  
标签:语句 TRUNCATE truncate 记录 tab 表中 删除

        在 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 语句高。

标签:语句,TRUNCATE,truncate,记录,tab,表中,删除
From: https://blog.csdn.net/W_Fe5/article/details/141125881

相关文章

  • redis scan 优雅的批量删除
    参考:https://ops-coffee.cn/s/x48wmx_k55hmPfZL0tyBYQ.htmlRedis删除特定前缀key的优雅实现还在用keys命令模糊匹配删除数据吗?这就是一颗随时爆炸的炸弹!Redis中没有批量删除特定前缀key的指令,但我们往往需要根据前缀来删除,那么究竟该怎么做呢?可能你一通搜索后会得到下边的答......
  • 用layui +echarts 曲线图实现子页面向父页面传值,点击曲线图表上的点后删除该点,并在删
    下面是一个完整的示例,展示了如何使用layui和ECharts实现以下功能:子页面向父页面传值。点击曲线图上的点后删除该点。删除后自动刷新layui表格列表。根据子页面传值和起止时间刷新父页面。文件结构假设你有两个文件:父页面(index.html)子页面(child.html)1.子页面......
  • 金蝶晕云星空表单插件:操作子单据体的删除触发父单据体的字段重算
    publicoverridevoidAfterDeleteRow(AfterDeleteRowEventArgse){base.AfterDeleteRow(e);if(e.EntityKey.Equals(asEntityKey))//子单据体标识{Entityentity=this.View.BillBusinessInfo.GetEntity(entityKey);intentryCurrentRowInde......
  • leetcode面试经典150-26. 删除有序数组中的重复项
    https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150 packageleetcode150import"testing"funcTestRemoveDuplicates(t*testing.T){nums:=[]int{0,0,1,1,1,......
  • 织梦Dede怎么删除文档图片
    //解析body数据,获得所有图片的绝对地址functionGetPicsTruePath($body,$litpic){$delfiles=array();//存储图片地址数据if(!empty($litpic)){$litpicpath=GetTruePath();$litpicpath.=$litpic;$delfiles[]=$litpicpath;//缩略图地址}preg_match_all(......
  • strip 删除的是字符而不是 字符串
    s='abcaabc's=s.rstrip('abc') #!/usr/bin/python#-*-coding:UTF-8-*-random_string='thisisgood'#字符串末尾的空格会被删除print(random_string.rstrip())#'sioo'不是尾随字符,因此不会删除任何内容print(random_string.rstrip('......
  • MySQL——删除数据(二)DELETE 删除全部数据
            在DELETE语句中如果没有使用WHERE子句,则会将表中的所有记录都删除。        例如,删除student表中的所有记录,在删除数据之前首先使用查询语句查看student表中的所有记录,执行结果如下所示:mysql>select*fromstudent;+------+---------+---......
  • MySQL——删除数据(一)DELETE 删除部分数据
            删除数据是指对表中存在的记录进行删除,这是数据库的常见操作,比如一个学生转学了,就需要在student表中将其信息记录删除。MySQL中使用DELETE语句来删除表中的记录,其语法格式如下所示:DELETEFROM表名[WHERE条件表达式]    在上面的语法格式中,......
  • 数据库表时如何设计的?在建表中遇到最大的坑是啥?
    数据库表设计是数据库架构中的核心任务,它直接影响系统的性能、可维护性和扩展性。以下是数据库表设计的一些关键原则和常见的挑战(或“坑”):###数据库表设计的关键原则1.**需求分析**-**业务需求**:确保表设计满足业务需求,包括数据存储、查询、修改和删除的要求。-**数据......
  • SQL Server给表添加及删除主键Primary Key及默认值Default约束
    1.添加表的主键(PrimaryKey)和默认值(Default)约束在SQLServer中,给表添加主键(PrimaryKey)及默认值(Default)约束是数据库设计和维护中常见的操作。这些操作可以通过ALTERTABLE语句在表已存在的情况下执行,也可以通过CREATETABLE语句在创建表时直接指定。下面分别介绍这两种情......