Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
ClausesStatementsKeywordsExpressionsFunctionsIndexesPerformance 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.