Difference Between TRUNCATE, DELETE And DROP In SQL

TRUNCATE vs DELETE vs DROP in SQL

1. TRUNCATE

The TRUNCATE SQL command removes all rows from a table without logging individual row deletions. It is faster than DELETE and is classified as a DDL (Data Definition Language) command.

Key Characteristics of TRUNCATE:

  • Removes all rows from a table.

  • Faster than DELETE due to minimal logging in the transaction log.

  • Uses a table lock, meaning the entire table is locked while the operation is performed.

  • Cannot use the WHERE clause (it removes all rows at once).

  • Resets identity columns (if any) to their seed values.

  • Requires ALTER permission on the table.

  • Consumes less transaction log space than DELETE.

  • It cannot be used with indexed views.

Example:

TRUNCATE TABLE Customers;

2. DELETE

The DELETE SQL command removes specific or all records from a table. It allows the use of a WHERE clause to filter records before deletion. DELETE is a DML (Data Manipulation Language) command.

Key Characteristics of DELETE:

  • Removes specific rows if the WHERE clause is used; otherwise, it deletes all rows.

  • Uses a row lock, meaning each row is locked and deleted individually.

  • Maintains the transaction log, making it slower than TRUNCATE.

  • Does not reset identity column values.

  • It can be rolled back if used within a transaction.

  • Requires DELETE permission on the table.

  • Uses more transaction log space than TRUNCATE.

  • It can be used with indexed views.

Examples:

Delete all rows:

DELETE FROM Customers;

Delete specific rows:

DELETE FROM Customers WHERE OrderId > 1000;

3. DROP

The DROP SQL command removes a table completely from the database, including its data, indexes, triggers, constraints, and permissions.

Key Characteristics of DROP:

  • Removes the table definition and all data permanently.

  • It cannot be rolled back once executed.

  • No DML triggers are fired when using DROP.

  • Requires ALTER permission on the schema or CONTROL permission on the table.

  • Deletes all associated indexes, privileges, and constraints.

Example:

DROP TABLE Customers;

4. Summary of Differences

FeatureTRUNCATEDELETEDROP
TypeDDL (Data Definition)DML (Data Manipulation)DDL (Data Definition)
Removes Data?Yes (All rows)Yes (Specific rows if WHERE is used, else all)Yes (Entire table)
Can use WHERE?❌ No✅ Yes❌ No
Resets Identity Columns?✅ Yes❌ No❌ No
Transaction LogMinimal logging (faster)Logs each deleted row (slower)No logging
Can be Rolled Back?❌ No✅ Yes (if used inside a transaction)❌ No
Table Structure Remains?✅ Yes✅ Yes❌ No (Table is removed)
Permission RequiredALTERDELETEALTER, CONTROL

Conclusion

  • Use TRUNCATE when you need to remove all records quickly and don't need to retain identity values.

  • Use DELETE when you need to remove specific records using a WHERE clause or to keep the table structure intact.

  • Use DROP when you want to completely remove a table from the database completely. 

Soeng Souy

Soeng Souy

Website that learns and reads, PHP, Framework Laravel, How to and download Admin template sample source code free.

Post a Comment

CAN FEEDBACK
Ad