Suppression de données

Effectué

Tout comme l’instruction INSERT ajoute toujours des lignes entières à une table, l’instruction DELETE supprime toujours des lignes entières.

Utiliser DELETE pour supprimer des lignes spécifiques

DELETE opère sur un ensemble de lignes, soit défini par une condition dans une clause WHERE, soit défini dans une jointure. La clause WHERE d’une instruction DELETE a la même structure qu’une clause WHERE dans une instruction SELECT.

Notes

Il est important de garder à l’esprit qu’une opération DELETE sans clause WHERE correspondante supprime toutes les lignes d’une table. Utilisez l’instruction DELETE avec précaution.

Le code suivant illustre la syntaxe de base de l’instruction DELETE :

DELETE [FROM] <TableName>
WHERE <search_conditions>;

L’exemple suivant utilise l’instruction DELETE pour supprimer tous les produits de la table spécifiée qui ne sont plus vendus. Une colonne de la table est nommée discontinued et, pour les produits qui ne sont plus disponibles, elle a la valeur 1.

DELETE FROM Production.Product
WHERE discontinued = 1;

Utiliser TRUNCATE TABLE pour supprimer toutes les lignes

DELETE sans clause WHERE supprime toutes les lignes d’une table. Pour cette raison, l’instruction DELETE est généralement utilisée de manière conditionnelle, avec un filtre dans la clause WHERE. Si vous voulez vraiment supprimer toutes les lignes et conserver une table vide, vous pouvez utiliser l’instruction TRUNCATE TABLE. Cette instruction n’autorise pas de clause WHERE et supprime toujours toutes les lignes en une seule opération. Voici un exemple :

TRUNCATE TABLE Sales.Sample;

TRUNCATE TABLE est plus efficace que DELETE lorsque vous souhaitez supprimer toutes les lignes.