Skip to main content
Documents
Clauses StatementsKeywordsExpressionsFunctionsIndexesPerformance Optimization

MySQL TRUNCATE TABLE Statement

The `TRUNCATE TABLE` statement in MySQL is used to delete all rows from a table, effectively resetting it to its empty state. Unlike `DELETE`, it performs this operation quickly by deallocating the data pages used by the table.

Usage

The `TRUNCATE TABLE` statement is used when you need to quickly remove all data from a table without logging individual row deletions. It is often employed during development or when resetting tables for test environments.

TRUNCATE TABLE table_name;

In this syntax, `TRUNCATE TABLE table_name` specifies the table from which all rows will be removed. Note that `TRUNCATE TABLE` is a Data Definition Language (DDL) operation and implicitly commits the transaction, which means its effects are immediate and cannot be rolled back if not within a transaction.

Examples

1. Basic Truncate

TRUNCATE TABLE employees;

This example removes all entries from the `employees` table, leaving it empty.

2. Truncate with Foreign Key Checks Disabled

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE orders;
SET FOREIGN_KEY_CHECKS = 1;

Here, foreign key checks are temporarily disabled to truncate the `orders` table, which could have dependencies.

3. Truncate and Reset Auto-Increment

TRUNCATE TABLE logs;

Truncating the `logs` table not only deletes all rows but also resets any auto-increment counters to their initial values.

Tips and Best Practices

  • Use with caution. `TRUNCATE TABLE` cannot be rolled back if not within a transaction; ensure you want to permanently delete all data.
  • Consider foreign keys. Temporarily disable foreign key checks if necessary when truncating tables with dependencies.
  • Reset data effectively. Utilize this command for quick data resets in test or development environments rather than using `DELETE`.
  • Beware of permissions. Ensure you have the necessary permissions, as `TRUNCATE TABLE` requires `DROP` privileges on the table.
  • Triggers are not activated. Unlike `DELETE`, `TRUNCATE TABLE` does not activate triggers, which may be an important consideration in your database operations.
  • Impact on indexes. Truncating a table will also remove and recreate indexes, which can result in performance improvements when resetting large tables.

SQL Upskilling for Beginners

Gain the SQL skills to interact with and query your data.
Start Learning for Free