Différence entre DELETE et TRUNCATE
Quelle est la différence entre DELETE et TRUNCATE ? – Dans SQL, il y a plusieurs façon pour supprimer les lignes d’une table. Vous pouvez utiliser les commandes TRUNCATE et DELETE. Bien que le résultat final des deux commandes soit le même, il existe des différences très importantes que vous devez connaître.
Table de comparaison
DELETE | TRUNCATE | |
---|---|---|
Suppression | Vous pouvez spécifier le tuple que vous souhaitez supprimer. | Il supprime tous les tuples d’une relation. |
WHERE | La commande DELETE peut avoir une clause WHERE. | La commande TRUNCATE n’a pas de clause WHERE. |
La vitesse | La commande DELETE agit plus lentement que TRUNCATE. | TRUNCATE est plus rapide que DELETE. |
Restauration | La commande DELETE peut être suivie par COMMIT ou ROLLBACK. | La commande TRUNCATE ne peut pas être suivie par ROLLBACK. |
Transaction | DELETE enregistre le log des transactions pour chaque tuple supprimé. | TRUNCATE enregistre le log des transactions pour chaque donnée supprimée. |
Suppression | La commande DELETE supprime les tuples un par un. | TRUNCATE supprime les données entière contenant les tuples. |
Le langage | DELETE est une commande du langage de manipulation de données. | TRUNCATE est une commande du langage de définition de données. |
Définition de DELETE
La commande DELETE permet de supprimer des lignes d’une table. La clause WHERE peut être utilisée pour supprimer uniquement certaines lignes. Si aucune condition WHERE n’est spécifiée, toutes les lignes seront supprimées. Après avoir effectué une opération DELETE, vous devez COMMIT ou ROLLBACK la transaction pour rendre la modification permanente ou pour l’annuler. Notez que cette opération provoquera le déclenchement de tous les déclencheurs DELETE sur la table.
Exemple :
Supposons qu’on a une table STUDENT qui contient 50 étudiants
SQL> SELECT COUNT(*) FROM student; COUNT(*) ---------- 50
SQL> DELETE FROM student WHERE name = 'Alex'; 5 rows deleted.
SQL> COMMIT; Commit complete.
SQL> SELECT COUNT(*) FROM student; COUNT(*) ---------- 45
Définition de TRUNCATE
TRUNCATE supprime toutes les lignes d’une table. L’opération ne peut pas être annulée et aucun déclencheur ne sera déclenché. En tant que tel, TRUCATE est plus rapide et n’utilise pas autant d’espace que DELETE.
SQL> TRUNCATE TABLE student; Table truncated.
SQL> SELECT COUNT(*) FROM student; COUNT(*) ---------- 0
Conclusion:
Si vous souhaitez personnaliser la suppression des enregistrements d’une table, vous pouvez utiliser la commande DELETE. Si vous souhaitez vider la table, c’est-à-dire que vous ne voulez pas laisser de données dans une table, utilisez la commande TRUNCATE.
Well Basically you know the DML AND DDL concept the above difference is just keep in mind but the key difference is that Truncate only manuplates the data without affecting a table structure and key constraints but on the other hand Delete will affect the table structure also if we won’t specify a where conditions.