Difference between Delete and Truncate in SQL

Key difference: Delete and Truncate are SQL commands, used to perform specific operations. These are different types of data languages. The ‘DELETE’ command is used to remove any specific row from a table, whereas a ‘TRUNCATE’ command is used to remove the data from the table.

The ‘delete’ statement command in SQL is a type of Data Manipulation Language (DML). This command is used to delete any specific row from a particular table. The ‘where’ clause in the command specifies the location of which exact row is to be deleted. Any specific attribute related to the query can be specified in the command and the row can be deleted.

The syntax of ‘DELETE” command states as:

DELETE FROM table_name [WHERE condition];

Any rows that match the WHERE condition will be removed from the table. If the WHERE clause is omitted, all rows in the table will be removed. The DELETE statement has to be used carefully. There are chances of the data being lost after the usage of the DELETE statement. Also, after executing a DELETE statement, there are chances to cause a trigger in other tables.

For example, if two tables are linked by a foreign key and rows in the referenced table are deleted, then it is common that rows in the referencing table would also have to be deleted to maintain referential integrity.

The ‘truncate’ statement in SQL is a type of Data Definition Language (DDL). These statements are used to remove the entire data from a table. The result of this operation quickly removes all data from a table, typically bypassing a number of integrity enforcing mechanisms. This statement works without the ‘Where’ clause, and simply empties the table, its function is similar to that of the ‘delete’ statement. As soon as the command is implied, the table gets cleared, so this command has to be used with care.

The syntax of the ‘TRUNCATE’ commands follows as:

TRUNCATE TABLE table_name;

This command once used cannot recover the data back; at the first attempt itself, it clears all the data from the table. Hence, the data of the respected table is entirely lost from all the corners of the database.

Comparison between Delete and Truncate in SQL:


Delete in SQL

Truncate in SQL

They are

DELETE is executed in order to remove a specific row from a table.

TRUNCATE is executed in a table in order to clear the entire table.


The DELETE statement removes rows one at a time and records an entry in the transaction log for each deleted row.

TRUNCATE TABLE removes the data by de-allocating the data pages used to store the table data and records only the page de-allocations in the transaction log.

Types of data languages

It is DML (Data Manipulation Language) command.

It is DDL (Data Definition Languages) command.

Usage of ‘Where’ clause

Here the ‘Where’ clause is used.

Here the ‘Where’ clause is not used.

Log maintenance

It maintains the log, so it is slower than TRUNCATE.

Minimal logging in transaction log, so it is faster performance wise.

Retaining capacity

The identity of column keeps DELETE, but retains the identity.

Identify column is reset to its seed value if table contains any identity column.

Permission of

To use Delete you need DELETE permission on the table.

To use Truncate on a table you need at least ALTER permission on the table.

Indexed views

It can be used with indexed views.

It cannot be used with indexed views.


In the TRUNCATE TABLE, the trigger is not activated, because of which the operation does not log individual row deletions.

Delete activates a trigger because the operations are logged individually.

Space utilization

Delete uses more transaction space than the Truncate statement.

Truncate uses the less transaction space than the Delete statement.

Image Courtesy: blog.sqlauthority.com, irfansworld.wordpress.com 

Most Searched in Arts and Humanities Most Searched in Health
Top 10 Most Searched Differences Most Searched in Games and Recreation
Wikipedia vs WikiLeaks
Dating vs Flirting
Burial vs Funeral vs Cremation
Agar vs Gelatin

Add new comment

Plain text

This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.