Maison >base de données >tutoriel mysql >TRUNCATE vs DELETE en SQL : quelles sont les principales différences ?
Compréhension approfondie des différences entre TRUNCATE et DELETE en SQL
Les commandes TRUNCATE et DELETE dans SQL sont toutes deux utilisées pour supprimer des données dans une table, mais leurs méthodes sont différentes. TRUNCATE fournit généralement un moyen plus rapide et plus complet de supprimer des données.
Type de relevé
Contrairement à DELETE qui est du DML (Data Manipulation Language), TRUNCATE appartient au DDL (Data Definition Language).
Commit et rollback
Les capacités d'annulation des commandes varient selon la base de données :
Recyclage spatial
DELETE laisse de l'espace libre, tandis que TRUNCATE le récupère. L'option REUSE STORAGE d'Oracle permet de préserver les segments de données, améliorant ainsi l'efficacité lors du rechargement des tables.
Plage de lignes
DELETE permet la suppression sélective de lignes, tandis que TRUNCATE supprime toutes les lignes sans condition. Oracle autorise la troncature de partitions spécifiques dans les tables partitionnées.
Type d'objet
DELETE fonctionne sur les tables et les tables clusterisées, mais TRUNCATE est limité aux tables ou à l'ensemble du cluster (spécifique à Oracle).
Identifiant de l'objet de données
Dans Oracle, DELETE conserve l'ID de l'objet de données, tandis que TRUNCATE attribue un nouvel ID à moins qu'aucune opération d'insertion n'ait eu lieu depuis la création de la table.
Flashback (Oracle)
DELETE prend en charge la fonctionnalité Flashback, mais TRUNCATE la bloque à moins que la fonctionnalité FLASHBACK ARCHIVE ne soit utilisée.
Autorisations
L'autorisation DELETE peut être accordée à l'utilisateur, mais TRUNCATE nécessite l'autorisation DROP ANY TABLE (spécifique à Oracle).
Notes de performances
Déclencheurs et exécution à distance
TRUNCATE prend en charge les déclencheurs DDL (spécifiques à Oracle). Oracle n'autorise pas l'exécution de TRUNCATE à distance.
Colonne Identité
Dans SQL Server, TRUNCATE réinitialise la séquence de colonnes d'identité, mais pas DELETE.
Ensemble de résultats
Dans Oracle PL/SQL, l'instruction DELETE peut renvoyer les lignes supprimées au client.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!