Recommandé, 2024

Choix De L'Éditeur

Différence entre DELETE et TRUNCATE en SQL

DELETE et TRUNCATE sont les commandes utilisées pour supprimer les nuplets d’une relation, mais elles diffèrent dans de nombreux contextes. En SQL, la commande DELETE est une commande du langage de manipulation de données alors que la commande TRUNCATE est une commande du langage de définition de données . Cependant, le point qui nous permet de différencier DELETE et TRUNCATE est que DELETE est capable de supprimer des n-uplets spécifiés d'une relation, alors que la commande TRUNCATE supprime des n-uplets entiers d'une relation.

nous ne devrions pas nous arrêter ici, il existe de nombreuses autres différences entre DELETE et TRUNCATE. Laissez-nous en discuter à l’aide du tableau de comparaison ci-dessous.

Tableau de comparaison

Base de comparaisonEFFACERTRONQUER
De baseVous pouvez spécifier le tuple que vous souhaitez supprimer.Il supprime tous les tuples d'une relation.
La langueDELETE est une commande du langage de manipulation de données.TRUNCATE est une commande du langage de définition de données.
La commande DELETE peut avoir la clause WHERE.La commande TRUNCATE n'a pas de clause WHERE.
DéclencheurLa commande DELETE active le déclencheur appliqué sur la table et les déclenche.La commande TRUNCATE n’active pas les déclencheurs à déclencher.
EffacementLa commande DELETE élimine les nuplets un par un.TRUNCATE supprime toute la page de données contenant les n-uplets.
Fermer à cléLa commande DELETE verrouille la ligne / tuple avant de la supprimer.La page de données de verrouillage de la commande TRUNCATE avant la suppression des données de la table.
La vitesseLa commande DELETE agit plus lentement que TRUNCATE.TRUNCATE est plus rapide que DELETE.
TransactionDELETE enregistre le journal des transactions pour chaque tuple supprimé.Journal des transactions d’enregistrement TRUNCATE pour chaque page de données supprimée.
RestaurerLa commande DELETE peut être suivie par COMMIT ou ROLLBACK.La commande TRUNCATE ne peut pas être ROLLBACK.

Définition de DELETE

DELETE est une commande DML ( Data Manipulation Language ). La tâche de la commande DELETE consiste à supprimer ou à supprimer les n-uplets d'une table ou d'une relation. En utilisant DELETE, nous sommes en mesure d'éliminer le tuple entier, avec toutes les valeurs d'attribut d'une relation. DELETE ne supprime pas la valeur d'un attribut particulier, d'un tuple de la relation.

Vous pouvez filtrer les nuplets que vous souhaitez supprimer d'une table, à l'aide de la clause WHERE . Si vous spécifiez la clause WHERE dans l'instruction DELETE, elle supprimera uniquement les nuplets satisfaisant la condition de la clause WHERE. Mais si vous ne spécifiez pas la clause WHERE dans l'instruction DELETE, elle supprime ou élimine par défaut tous les nuplets d'une relation. La clause WHERE de l’instruction DELETE peut contenir des instructions SELECT-FROM-WHERE imbriquées.

La syntaxe de la commande DELETE est la suivante:

DELETE FROM nom_table WHERE [ condition ];

La commande DELETE ne fonctionne que sur une seule relation ou table à la fois. Si vous souhaitez supprimer le tuple de différentes relations, vous devez placer une commande DELETE différente pour chacune. Toutefois, la suppression d'un tuple d'une relation peut constituer une violation de l' intégrité référentielle de la base de données, qui peut être résolue à l'aide de déclencheurs. Si la commande DELETE viole l'intégrité référentielle, tous les déclencheurs référentiels (s'ils sont spécifiés) sont activés et propagent l'action de suppression sur les n-uplets de relations différentes faisant référence aux n-uplets supprimés.

La commande DELETE commence par verrouiller la ligne ou le tuple à supprimer, puis supprime le tuple un par un . Par conséquent, il nécessite plus de verrous et de ressources, ce qui le ralentit . Vous pouvez rendre les modifications apportées par l'instruction DELETE permanentes à l'aide de COMMIT ou réinitialiser la base de données à l'aide de ROLLBACK .

Définition de TRUNCATE

TRUNCATE est similaire à la commande DELETE, car elle supprime également les n-uplets d'une relation. La différence est que cela supprime des nuplets entiers d'une relation. Lorsque la commande TRUNCATE est exécutée, toutes les données de la table sont supprimées, chaque tuple ainsi que toutes les valeurs de ses attributs étant éliminés de la table. Mais la structure de la table existe toujours dans la base de données. Vous pouvez donc à nouveau entrer les n-uplets dans le tableau. TRUNCATE est une commande du langage de définition de données.

La syntaxe de la commande TRUNCATE est la suivante:

TRUNCATE TABLE nom_table ;

Comme DELETE, TRUNCATE ne fonctionne pas sur les données de table, ligne par ligne. Au lieu de cela, il opère sur les pages de données qui stockent les données de la table. Désormais, lorsque TRUNCATE supprime des pages de données, il doit acquérir le verrou sur les pages de données au lieu des n-uplets. Par conséquent, moins de verrous et de ressources sont nécessaires, ce qui accélère le traitement de TRUNCATE par rapport à DELETE.

L'exécution de la commande TRUNCATE n'active aucun déclencheur car elle ne gère pas les données ligne par ligne. TRUNCATE ne peut pas être exécuté si la table est référencée par une clé étrangère . Une fois que la commande TRUNCATE supprime les données de la table, elles ne peuvent jamais être récupérées .

Différences de clés entre DELETE et TRUNCATE en SQL

  1. La principale différence entre DELETE et TRUNCATE réside dans le fait qu’en utilisant DELETE, vous pouvez supprimer un tuple spécifié d’une relation. Mais l'utilisation de TRUNCATE supprimera des nuplets entiers d'une relation.
  2. DELETE est une commande DML alors que TRUNCATE est une commande DDL.
  3. DELETE utilise la clause WHERE pour filtrer l’enregistrement / les tuples à supprimer. Cependant, TRUNCATE n'exige pas de clause WHERE car il supprime tous les nuplets, il n'est donc pas nécessaire de filtrer les nuplets.
  4. DELETE active les déclencheurs référentiels appliqués aux tables. Mais TRUNCATE ne déclenche aucun déclencheur sur la table.
  5. La commande DELETE élimine les n-uplets un par un de la table, dans l’ordre où ils sont traités. Cependant, TRUNCATE ne fonctionne pas sur les n-uplets un par un. Au lieu de cela, TRUNCATE fonctionne sur une page de données qui stocke les données de table.
  6. DELETE acquiert le verrou sur le tuple avant de le supprimer alors que TRUNCATE acquiert le verrou sur la page de données avant de supprimer la page de données.
  7. TRUNCATE est plus rapide que la commande DELETE.
  8. DELETE enregistre le journal des transactions pour chaque tuple alors que TRUNCATE enregistre le journal des transactions pour chaque page de données.
  9. Une fois que vous supprimez des données à l'aide de TRUNCATE, elles ne peuvent jamais être récupérées, alors que vous pouvez récupérer vos données que vous avez supprimées à l'aide de la commande DELETE.

Conclusion:

Si vous souhaitez personnaliser la suppression des enregistrements de la table, vous pouvez utiliser la commande DELETE. Si vous voulez vider la table, c'est-à-dire que vous ne voulez pas laisser de données dans une table, utilisez la commande TRUNCATE.

Top