MySQL Truncate Table

MySQL Truncate Table 语句删除所有记录或完整数据,而不影响表结构或索引。当您想删除所有现有记录时,Truncate Table 语句是您的最佳选择,其基本语法是

TRUNCATE TABLE `Schema_Name`.`Table_Name`

我们将使用以下内容来演示此 Truncate 表。

MySQL Truncate Table 示例

在此示例中,我们将清除上述内容。

TRUNCATE TABLE sqltest.empdetails;

让我们看看上表中的数据。

SELECT EmpID, `FirstName`, `LastName`,Education, 
       Occupation, YearlyIncome, Sales, HireDate
FROM empdetails;
Truncate Table Statement 1

如您所见,它返回了 0 条记录。查看上述 MySQL 结果,您可能想知道为什么在没有 WHERE 子句DELETE 语句 也可以类似地完成时,我们还需要 TRUNCATE。

  • 嗯,它会自动将 AUTO_INCREMENT 计数器重置到起点,这对于 DELETE 语句是不可能的。
  • 此语句会删除现有表并重新创建相同的表。因此,在此过程中,任何 DELETE 触发器都不会触发。

这是使用命令提示符或终端的另一个 Truncate Table 示例。

TRUNCATE TABLE sqltest.employeedetails;
TRUNCATE TABLE Command Prompt Example 2

使用 Workbench

如果您可以访问 MySQL Workbench,则截断表很容易。首先,选择并右键单击要清除的表。接下来,选择下面显示的选项

Truncate Table Statement using Workbench 5

它会弹出一个窗口。如果您愿意,可以通过选择“查看 SQL”来查看此选项生成的查询。否则,单击“截断”按钮。

MySQL 截断所有表

在 MySQL 中,您可以使用 information_schema 获取数据库中的所有表。从那里,您可以删除所需的表。

例如,以下查询返回数据库中所有可用的表。因此,它对于查找可用的表列表非常有帮助。然后对它们执行所需的操作。

SELECT TABLE_NAME
FROM information_schema.tables
WHERE table_schema = 'sqltest'

接下来,您可以使用此语句一个接一个地清除。

TRUNCATE TABLE department

或者,您可以使用以下代码生成一个语句,以删除数据库中的所有表。

SELECT CONCAT('TRUNCATe TABLE ' , TABLE_NAME )
FROM information_schema.tables
WHERE table_schema = 'sqltest'

上面的代码返回所有表的截断语句。您可以复制并执行这些代码。