删除MySQL数据库中的所有数据表

删除MySQL数据库中的所有数据表

如果用户想要从MySQL数据库中删除表中的所有记录,则需要执行TRUNCATE语句。

TRUNCATE语句的语法

MySQL RDBMS中实现truncate查询的语法如下:

TRUNCATE TABLE table_name;

Table Truncate功能

  1. TRUNCATE TABLE从表中删除所有记录。如果用户想要从表中删除所有数据,则用户必须具有DROP权限。TRUNCATE类似于MySQL中的DELETE语句。它的工作原理类似于DELETE语句,因为它删除表中的所有行。它是一系列DROP和CREATE TABLE语句。
  2. 如果用户想要提高效率,则TRUNCATE TABLE比使用数据操作语言方法从表中删除数据是更好的选择。因此,在实现TRUNCATE TABLE时不会触发ON DELETE触发器。因此,不能在包含父子外键关系的InnoDB表中使用它。在执行DML语句时,用户无法回滚TRUNCATE语句。
  3. TRUNCATE TABLE语句可以在使用支持原子数据定义语言的存储引擎的表中实现。如果服务器在执行MySQL中的查询时停止,查询可以完全完成或回滚。
  4. TRUNCATE语句在逻辑上实现为DELETE语句,但TRUNCATE语句被认为是定义语言语句,而DELETE被认为是数据操作语言命令。

TRUNCATE和DELETE语句的区别

TRUNCATE和DELETE语句的区别如下:

  • 如果用户实现TRUNCATE语句,它类似于实现DROP语句并重新创建相同的表。与使用DELETE语句相比,实现速度更快,因为用户将不得不为表中的每一行实现DELETE语句。对于记录较多的表来说,这将被视为困难。
  • 在使用TRUNCATE语句时,用户不需要实现COMMIT查询。用户无法执行回滚操作。因此,在对数据实现TRUNCATE语句之前,用户应该先创建现有表的副本。
  • 如果当前会话持有活动表锁,则用户无法截断表。
  • 如果任何上述表包含引用该表的其他表的外键约束,则无法在InnoDB或NDB表中执行TRUNCATE TABLE。如果外键约束在同一表的列中,则可以实现TRUNCATE语句。
  • 当用户使用DELETE语句时,它也会返回受特定查询影响的行数,但是使用TRUNCATE语句时,不会返回有意义的值。它显示0行受影响,可以解释为在MySQL中没有信息。
  • 假设正在执行查询的表定义是有效的。在这种情况下,即使表中存储的数据或索引文件损坏,TRUNCATE语句也将返回一个空表。
  • 如果用户使用了AUTO_INCREMENT值,它的值将返回到初始值。即使对于通常不允许用户重新分配序列值的InnoDB和MyISAM也适用。
  • 如果在分区表上实现TRUNCATE命令,则在实现TRUNCATE TABLE时保留分区。实际数据和索引文件被删除,然后重新创建。窗口中的分区保持不变。
  • 当用户在表上实现TRUNCATE TABLE命令时,它不会调用ON DELETE触发器。
  • 用户还可以在损坏的InnoDB表上实现TRUNCATE语句。
  • TRUNCATE TABLE以数据定义语言而不是数据操作语言的形式执行二进制日志记录和复制。该语句始终作为一个语句记录。
  • 当在表上使用TRUNCATE TABLE语句时,它关闭通过HANDLER OPEN语句打开的该表的所有处理程序。
  • 在具有大型缓冲池且启用innodb_adaptive_hash_index的系统上的MySQL 5.7和更早版本中,TRUNCATE TABLE可能会暂时降低系统性能。性能下降是由于在删除表的自适应哈希索引条目时执行的LRU扫描。在最新的版本中,当实现truncate语句时,将truncate table映射到drop和create table可以防止进行LRU扫描。
  • 该命令还可以在性能模式中存在的汇总表上实现。TRUNCATE TABLE对这些表的影响是将汇总列重置为0或NULL。它不会从表中删除行。
  • 如果在文件级别的表空间中存储的InnoDB表上实现TRUNCATE TABLE命令,则会删除现有表空间并创建一个新的表空间。

TRUNCATE语句的实现

用户可以在现有表上实现TRUNCATE命令。我们已经讨论了实现TRUNCATE命令的语法。如下所示:

TRUNCATE TABLE table_name;

在实施TRUNCATE语句之前,用户必须创建一个表并向表中添加数据,以确保TRUNCATE命令能够成功执行。

要在MySQL中创建一个表,请使用CREATE TABLE命令。

CREATE TABLE demotable(
StudID int, S_Name varchar(100), S_Course varchar (50) );

上述查询将定义一个名为demo table的表,其中包含三列StudentID、Student_Name和Student_Course。

下一步是将数据存储在定义的表中。如果用户想要在表中插入记录,则用户需要实现一个INSERT语句。向demotable中添加数据的语法如下:

INSERT INTO table_name VALUES (value1, value2, value3…);

在表中插入数据,请键入给定的查询:

INSERT INTO demotable VALUES (1, 'AMAN', 'Mathematics');
INSERT INTO demotable VALUES (2, 'HARSH', 'Mathematics');
INSERT INTO demotable VALUES (3, 'RAHUL', 'Computer Science');
INSERT INTO demotable VALUES (4, 'ROHIT', 'English');
INSERT INTO demotable VALUES (5, 'VIJAY', 'Science');

在MySQL中实现上述5个SQL语句将在演示表中有以下五行信息。一旦将数据值添加到表的相应列中,用户可以通过显示表中的所有记录来进行检查。

用户必须实现一个SELECT查询来查看存储在表中的所有记录。显示demotable的查询语句如下:

SELECT * FROM demotable;

它将返回给定的输出:

删除MySQL数据库中的所有数据表

经过检查,所有的值都成功记录在表中。使用上述语法来实现TRUNCATE语句从表中删除所有记录。实现TRUNCATE命令的查询如下:

TRUNCATE TABLE demotable;

它将从表中删除所有现有数据。显示演示表中的记录,以确保TRUNCATE语句成功执行。您可以通过再次实施SELECT查询来检查表中的所有数据是否已被删除。

SELECT * FROM demotable;

它不会返回任何数据,显示该表为空。要确保表为空,请尝试在表中插入新数据。您将看到它将成为demotable中的第一个值。

INSERT INTO demotable VALUES (1, 'AMAN', 'Mathematics');
SELECT * FROM demotable;

输出:

删除MySQL数据库中的所有数据表

使用DELETE关键字

用户还可以使用DELETE关键字来删除所有数据行而不删除表定义。如果用户执行DELETE语句,它会确保表定义、属性和索引不受查询的影响。

DELETE语句的语法

DELETE FROM table_name;

实现DELETE语句

首先,创建与上述相同的表,用户将实现DELETE语句。实现以下查询来创建并添加数据到表中。

-- create
CREATE TABLE demotable(
StudID int, S_Name varchar(100), S_Course varchar (50) );

-- insert
INSERT INTO demotable VALUES (1, 'AMAN', 'Mathematics');
INSERT INTO demotable VALUES (2, 'HARSH', 'Mathematics');
INSERT INTO demotable VALUES (3, 'RAHUL', 'Computer Science');
INSERT INTO demotable VALUES (4, 'ROHIT', 'English');
INSERT INTO demotable VALUES (5, 'VIJAY', 'Science');
-- fetch 
SELECT * FROM demotable;

一旦值被记录在表中,您可以通过实现SELECT查询来检查它们,以显示表中的记录。

SELECT * FROM demotable;

输出:

删除MySQL数据库中的所有数据表

最后使用delete关键字删除demotable中的所有记录。

DELETE FROM demotable;

以上语句将删除存储在demotable中的所有数据记录。表定义保持不变。为确保表为空,请尝试在表中插入新数据。您将看到它将成为demotable中的第一个值。

INSERT INTO demotable VALUES (1, 'HARSH', 'Mathematics');
SELECT * FROM demotable;

输出:

删除MySQL数据库中的所有数据表

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程