Décomposons la différence entre les commandes tronquées et supprimées dans SQL.
Commande SQL tronquée
La commande tronquée dans SQL est connue comme un langage de définition de données. Les commandes tronquées suppriment les données d'une table tout en préservant la structure du tableau. Contrairement à la commande de suppression, vous ne pouvez pas filtrer pour des enregistrements spécifiques en utilisant la clause WHERE.
De même, nous ne pouvons pas effectuer Rollback après avoir exécuté les commandes tronquées, car aucun journal n'est conservé pour cette commande.
Remarque: Certains moteurs de base de données prennent en charge le retour en arrière pour les commandes tronquées, mais ce n'est pas universel.
Si une table fait partie d'une vue indexée ou référencée par une clé étrangère, la commande tronquée ne fonctionnera pas sur ce tableau.
La syntaxe de commande est comme indiqué:
TRUNCATE TABLE TABLE_NAME;La commande truncicate est plus rapide que de supprimer car elle ne fait pas de numérisation pour les enregistrements avant la suppression. Il garantit également que l'ensemble du tableau est verrouillé avant de supprimer les données, réduisant ainsi l'espace de transaction.
Selon le moteur de la base de données, vous avez besoin d'autorisations explicites pour effectuer une opération tronquée sur un tableau. Par exemple, dans SQL Server, vous avez besoin de l'autorisation de la table alter. MySQL nécessite une autorisation de baisse, PostgreSQL nécessite une autorisation tronquée et Oracle nécessite la suppression de toute autorisation de table.
Commande SQL Delete
La commande de suppression est une commande de manipulation de données. Il vous permet de supprimer les enregistrements d'une table de base de données et renvoie le nombre d'enregistrements supprimés. Les commandes de suppression suppriment les lignes d'une table et non la table entière de la base de données.
Contrairement à la commande truncate, la commande de suppression vous permet de filtrer les enregistrements cibles à l'aide de la clause WHERE.
La syntaxe de commande est illustrée ci-dessous:
Supprimer de table_name;Pour filtrer pour des enregistrements spécifiques, vous pouvez utiliser la syntaxe comme indiqué ci-dessous:
Supprimer de table_name où condition;Remarque: Si vous ne spécifiez pas les colonnes cibles, la commande supprimera tous les enregistrements du tableau donné.
Contrairement à la commande truncicate, qui verrouille l'ensemble du tableau, la commande de suppression verrouille des lignes individuelles menant à un espace de transaction plus élevé, en particulier sur une grande table.
Pour exécuter une commande de suppression sur une table, vous avez besoin de l'autorisation de suppression.
Sommaire
Le tableau suivant résume les différences entre les commandes de suppression SQL et tronquée.
SQL tronqué | SQL Supprimer | |
---|---|---|
Taper | Langue de définition des données | Langage de manipulation des données |
Type de verrouillage | Tableau | Ligne |
Retour en arriere | Certains moteurs de base de données | Oui |
Journaux de transaction | Table entière | Par rangée |
Utilisation de l'espace de transaction | Moins | Plus haut |
Soutien de la prise en charge | Non | Oui |
Vitesse | Très vite | Lent |
Type de retrait | Toutes les lignes | Les lignes de toutes ou spécifiques (comme spécifié) |
Fonctionne avec une vue indexée? | Non | Oui |
Réinitialisation de la colonne d'identité | Certains moteurs de base de données | Non |
Renvoie les enregistrements supprimés? | Non | Oui |
Dans la plupart des cas, le choix du meilleur type d'opération dépendra de vos besoins spécifiques. Cependant, considérez les points suivants:
Conclusion
Cet article traite de deux commandes fondamentales pour supprimer les données dans une base de données SQL. En utilisant ce guide, vous pouvez explicitement spécifier ce que fait la commande truncate ou la commande de suppression dans une base de données relationnelle. Nous espérons que vous avez trouvé cet article utile. Consultez les autres articles sur les conseils pour plus de conseils et de tutoriels.