La différence entre les commandes DELETE et TRUNCATE est la partie la plus courante d’une question d’entretien. Ils sont principalement utilisés pour supprimer des données de la base de données. La principale différence entre elles est que l'instruction delete supprime les données sans réinitialiser l'identité d'une table, tandis que la commande truncate réinitialise l'identité d'une table particulière. . Cet article explique la présentation complète des commandes DELETE et TRUNCATE et leurs différences qui sont principalement utilisées de manière interchangeable mais sont totalement différentes.
Qu'est-ce qu'une commande DELETE ?
C'est un Commande DML ou de manipulation de données utilisé pour supprimer les enregistrements d'une table qui ne sont pas requis dans la base de données. Il supprime la ligne complète du tableau et produit le nombre de lignes supprimées. Nous avons besoin de l'autorisation de suppression sur la table cible pour exécuter cette commande. Il nous permet également de filtrer et de supprimer des enregistrements spécifiques à l'aide du OÙ clause du tableau.
Il précise que nous disposons d'une sauvegarde de notre base de données avant d'exécuter cette commande car nous ne pouvons pas récupérer les enregistrements supprimés à l'aide de cette requête. Par conséquent, la sauvegardes de base de données nous permettent de restaurer les données chaque fois que nous en aurons besoin à l'avenir.
La syntaxe suivante explique la commande DELETE pour supprimer des données de la table :
DELETE FROM table_name WHERE condition;
Qu'est-ce qu'une commande TRUNCATE ?
L'instruction tronquée est une Commande DDL ou langage de définition de données utilisé pour supprimer les données complètes de la table sans supprimer la structure de la table. Nous ne pouvons pas utiliser le OÙ avec cette commande, afin que le filtrage des enregistrements ne soit pas possible. Après avoir exécuté cette commande, nous impossible de restaurer les données supprimées car le journal n'est pas conservé lors de l'exécution de cette opération.
La commande truncate libère le pages au lieu de lignes et crée une entrée pour les pages de désallocation au lieu des lignes dans les journaux de transactions. Cette commande verrouille les pages au lieu des lignes ; ainsi, il nécessite moins de verrous et de ressources. Notez que nous ne pouvons pas utiliser l'instruction tronquée lorsqu'une table est référencée par une clé étrangère ou participe à une vue indexée.
Clé de période
La syntaxe suivante explique la commande TRUNCATE pour supprimer des données de la table :
TRUNCATE TABLE table_name;
Principales différences entre DELETE et TRUNCATE
Les points suivants expliquent les différences entre les commandes delete et truncate :
- L'instruction DELETE est utilisée lorsque nous souhaitons supprimer tout ou partie des enregistrements de la table, tandis que l'instruction TRUNCATE supprimera des lignes entières d'une table.
- DELETE est une commande DML car elle modifie uniquement les données de la table, alors que TRUNCATE est une commande DDL.
- La commande DELETE peut filtrer les enregistrements/tuples en utilisant la clause WHERE. Cependant, la commande TRUNCATE ne permet pas d'utiliser OÙ clause, nous ne pouvons donc pas filtrer les lignes lors de la troncature.
- DELETE active tout supprimer les déclencheurs sur la table pour tirer. Cependant, aucun déclencheur n'est déclenché lors de l'opération de troncature, car elle n'agit pas sur des lignes individuelles.
- DELETE effectue la suppression ligne par ligne, une par une, de la table, dans l'ordre dans lequel elles ont été traitées. Cependant, TRUNCATE fonctionne sur des pages de données plutôt que sur des lignes, car il supprime des données de table entières à la fois.
- L'instruction DELETE supprime uniquement les enregistrements et ne réinitialise pas le l'identité de la table , tandis que TRUNCATE réinitialise l'identité d'une table particulière.
- La commande DELETE nécessite plus de verrous et de ressources de base de données car elle acquiert le verrou sur chaque ligne supprimée. En revanche, TRUNCATE acquiert le verrou sur la page de données avant de supprimer la page de données ; ainsi, il nécessite moins de verrous et peu de ressources.
- L'instruction DELETE crée une entrée dans le journal des transactions pour chaque ligne supprimée tandis que TRUNCATE enregistre le journal des transactions pour chaque page de données.
- La commande TRUNCATE est plus rapide que la commande DELETE car elle libère les pages de données au lieu des lignes et enregistre les pages de données au lieu des lignes dans les journaux de transactions.
- Une fois l'enregistrement supprimé à l'aide de la commande TRUNCATE, nous ne pouvons pas le récupérer. En revanche, nous pouvons récupérer les données supprimées que nous avons supprimées de l’opération DELETE.
Tableau de comparaison DELETE et TRUNCATE
Le tableau comparatif suivant explique rapidement leurs principales différences :
Base de comparaison | SUPPRIMER | TRONQUER |
---|---|---|
Définition | L'instruction delete est utilisée pour supprimer un ou plusieurs enregistrements d'une table existante en fonction de la condition spécifiée. | La commande truncate supprime les données complètes d'une table existante mais pas la table elle-même. Il préserve la structure ou le schéma de la table. |
Langue | Il s'agit d'une commande DML (Data Manipulation Language). | Il s'agit d'une commande DDL (Data Definition Language). |
OÙ | Il peut utiliser la clause WHERE pour filtrer n'importe quelle ligne ou donnée spécifique de la table. | Il n'utilise pas la clause WHERE pour filtrer les enregistrements de la table. |
Autorisation | Nous devons avoir l'autorisation DELETE pour utiliser cette commande. | Nous devons avoir l'autorisation ALTER pour utiliser cette commande. |
Fonctionnement | Cette commande élimine les enregistrements un par un. | Cette commande supprime toute la page de données contenant les enregistrements. |
Verrouillage | Il verrouillera la ligne avant la suppression. | Il verrouillera la page de données avant la suppression. |
Identité de la table | Cette commande ne réinitialise pas l'identité de la table car elle supprime uniquement les données. | Il réinitialise toujours l'identité de la table. |
Transaction | Il conserve des journaux de transactions pour chaque enregistrement supprimé. | Il ne conserve pas de journaux de transactions pour chaque page de données supprimée. |
Vitesse | Sa vitesse est lente car il maintient le journal. | Son exécution est rapide car il supprime des données entières à la fois sans conserver les journaux de transactions. |
Déclenchement | Cette commande peut également activer la gâchette appliquée sur la table et provoquer son déclenchement. | Cette commande n'active pas les déclencheurs appliqués sur la table pour tirer. |
Restaurer | Cela nous permet de restaurer les données supprimées en utilisant l'instruction COMMIT ou ROLLBACK. | Nous ne pouvons pas restaurer les données supprimées après avoir exécuté cette commande. |
Vue indexée | Il peut être utilisé avec des vues indexées. | Il ne peut pas être utilisé avec des vues indexées. |
Espace | L'instruction DELETE occupe plus d'espace de transaction que tronquer car elle conserve un journal pour chaque ligne supprimée. | L'instruction TRUNCATE occupe moins d'espace de transaction car elle conserve un journal des transactions pour l'intégralité de la page de données au lieu de chaque ligne. |
Conclusion
Dans cet article, nous avons fait une comparaison entre les instructions delete et troncate. Nous avons conclu qu'une commande DELETE est utilisée lorsque l'on souhaite personnaliser la suppression des enregistrements de la table. Et une commande TRUNCATE est utilisée lorsque nous ne voulons laisser aucun enregistrement ou donnée dans la table, c'est-à-dire que nous voulons vider la table.