DELETE¶
Supprimez les lignes d’une table. Vous pouvez utiliser une clause WHERE pour préciser quelles lignes doivent être supprimées. Si vous devez utiliser une ou plusieurs sous-requêtes ou une ou plusieurs tables supplémentaires pour identifier les lignes à supprimer, spécifiez la ou les sous-requêtes ou la ou les tables dans une clause USING.
Important
Contrairement à TRUNCATE TABLE, cette commande ne supprime pas l’historique de chargement des fichiers externes. Si vous supprimez des lignes chargées dans la table à partir d’un fichier préparé, vous ne pouvez pas charger à nouveau les données de ce fichier à moins de modifier le fichier et de le préparer de nouveau.
Syntaxe¶
Paramètres requis¶
table_nameIndique la table dont les lignes sont supprimées.
Paramètres facultatifs¶
USING additional_table_or_query [, ... ]Si vous devez faire référence à des tables supplémentaires dans la clause WHERE pour aider à identifier les lignes à supprimer, spécifiez ces noms de table dans la clause USING. Vous pouvez également utiliser la clause USING pour spécifier des sous-requêtes qui identifient les lignes à supprimer.
Si vous spécifiez une sous-requête, mettez la sous-requête entre parenthèses.
Si vous spécifiez plusieurs tables ou requêtes, utilisez une virgule pour les séparer.
WHERE conditionSpécifie une condition à utiliser pour sélectionner les lignes à supprimer. Si ce paramètre est omis, toutes les lignes de la table sont supprimées, mais la table en question est conservée.
Notes sur l’utilisation¶
Lors de la suppression basée sur un JOIN (en spécifiant une clause
USING), il est possible qu’une ligne de la table cible soit jointe à plusieurs lignes de la ou des tablesUSING. Si la condition DELETE est remplie pour l’une des combinaisons jointes, la ligne cible est supprimée.Par exemple, les tables
tab1ettab2données avec des colonnes(k number, v number):Si vous lancez la requête suivante, la ligne dans
tab1est jointe avec les deux lignes detab2:Parce qu’au moins une paire jointe satisfait à la condition, la ligne est supprimée. Par conséquent, une fois l’instruction terminée,
tab1est vide.
Exemples¶
Supposons qu’une organisation qui loue des vélos utilise les tables suivantes :
La table nommée leased_bicycles répertorie les vélos qui ont été loués.
La table nommée returned_bicycles répertorie les vélos qui ont été rendus récemment. Ces vélos doivent être retirés du tableau des vélos loués.
Créez une table :
Chargez les données :
Cet exemple montre comment utiliser la clause WHERE pour supprimer une ou plusieurs lignes spécifiées. Cet exemple effectue une suppression en fonction du bicycle_ID :
Affichez les données après la suppression :
Cet exemple montre comment utiliser la clause USING pour spécifier les lignes à supprimer. Cette clause USING spécifie la table returned_bicycles, qui répertorie les IDs des vélos à supprimer de la table leased_bicycles. La clause WHERE joint la table leased_bicycles à la table returned_bicycles, et les lignes de la table leased_bicycles qui ont le même bicycle_ID que les lignes correspondantes dans la table returned_bicycles sont supprimées.
(Pour éviter d’essayer de supprimer à nouveau les mêmes lignes à l’avenir lorsque cela pourrait être inutile ou inapproprié, la table returned_bicycles est tronquée dans le cadre de la même transaction).
Affichez les données après la suppression :
Supposons maintenant qu’un autre vélo (ou plusieurs) soit rendu :
La requête suivante présente une clause USING qui contient une sous-requête (plutôt qu’une table) pour spécifier quels bicycle_IDs supprimer de la table leased_bicycles :
Affichez les données après la suppression :