Syntax:
TRUNCATE [TABLE] tbl_name

TRUNCATE TABLE empties a table completely. Logically, this is
equivalent to a DELETE statement that deletes all rows, but there are
practical differences under some circumstances.

For InnoDB before version 5.0.3, TRUNCATE TABLE is mapped to DELETE, so
there is no difference. Starting with MySQL 5.0.3, fast TRUNCATE TABLE
is available. However, the operation is still mapped to DELETE if there
are foreign key constraints that reference the table. (When fast
truncate is used, it resets any AUTO_INCREMENT counter. From MySQL
5.0.13 on, the AUTO_INCREMENT counter is reset by TRUNCATE TABLE,
regardless of whether there is a foreign key constraint.)

For other storage engines, TRUNCATE TABLE differs from DELETE in the
following ways in MySQL 5.0:

o Truncate operations drop and re-create the table, which is much
  faster than deleting rows one by one.

o Truncate operations are not transaction-safe; an error occurs when
  attempting one in the course of an active transaction or active table
  lock.

o The number of deleted rows is not returned.

o As long as the table format file tbl_name.frm is valid, the table can
  be re-created as an empty table with TRUNCATE TABLE, even if the data
  or index files have become corrupted.

o The table handler does not remember the last used AUTO_INCREMENT
  value, but starts counting from the beginning. This is true even for
  MyISAM and InnoDB, which normally do not reuse sequence values.

Since truncation of a table does not make any use of DELETE, the
TRUNCATE statement does not invoke ON DELETE triggers.

TRUNCATE TABLE is an Oracle SQL extension adopted in MySQL.
