Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Supprime les lignes des tables.
Note
La taille maximale d’une instruction SQL est de 16 Mo.
Syntaxe
[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] DELETE [ FROM ] { table_name | materialized_view_name } [ { USING } table_name, ... ] [ WHERE condition ]
Paramètres
- Clause WITH
-
Clause facultative qui en spécifie une ou plusieurs common-table-expressions. Voir Clause WITH.
- FROM
-
Le mot-clé FROM est facultatif, sauf si la clause USING est spécifiée. Les instructions
delete from event;
etdelete event;
sont des opérations équivalentes qui suppriment toutes les lignes de la table EVENT.Note
Pour supprimer toutes les lignes d’une table, TRUNCATE la table. TRUNCATE est beaucoup plus efficace que DELETE et ne requiert ni opération VACUUM ni opération ANALYZE. Cependant, sachez que TRUNCATE valide la transaction dans laquelle l’opération est exécutée.
- table_name
-
Table temporaire ou permanente. Seul le propriétaire de la table ou un utilisateur avec le privilège DELETE sur la table peut supprimer des lignes de la table.
Pensez à utiliser la commande TRUNCATE pour les opérations de suppression rapides non qualifiées sur les tables volumineuses ; consultez TRUNCATE.
Note
Après avoir supprimé un grand nombre de lignes d’une table :
-
Exécuter une opération VACUUM sur la table pour récupérer de l’espace de stockage et retrier les lignes.
-
Analysez la table pour mettre à jour les statistiques pour le planificateur de requête.
-
- materialized_view_name
-
Vue matérialisée. L’instruction DELETE fonctionne sur une vue matérialisée utilisée pour Diffusion de l'ingestion vers une vue matérialisée. Seul le propriétaire de la vue matérialisée ou un utilisateur disposant du privilège DELETE sur la vue matérialisée peut y supprimer des lignes.
Vous ne pouvez pas exécuter DELETE sur une vue matérialisée pour l’ingestion en streaming avec une politique de sécurité au niveau des lignes (RLS) qui ne dispose pas de l’autorisation IGNORE RLS accordée à l’utilisateur. Il existe une exception à cette règle : si RLS IGNORE est accordé à l’utilisateur exécutant DELETE, il s’exécute correctement. Pour plus d’informations, consultez Propriété et gestion des politiques RLS.
- USING nom_table, ...
-
Le mot-clé USING permet d’introduire une liste de tables lorsque des tables supplémentaires sont référencées dans la condition de la clause WHERE. Par exemple, l’instruction suivante supprime toutes les lignes de la table EVENT qui satisfont à la condition de jointure sur les tables EVENT et SALES. La table SALES doit être explicitement nommée dans la liste FROM :
delete from event using sales where event.eventid=sales.eventid;
Si vous répétez le nom de la table cible dans la clause USING, l’opération DELETE exécute une jointure réflexive. Vous pouvez utiliser une sous-requête dans la clause WHERE au lieu de la syntaxe USING comme alternative à l’écriture de la même requête.
- WHERE condition
-
Clause facultative qui limite la suppression de lignes à celles qui correspondent à la condition. Par exemple, la condition peut être une restriction sur une colonne, une condition de jointure ou une condition basée sur le résultat d’une requête. La requête peut faire référence à des tables autres que la cible de la commande DELETE. Par exemple :
delete from t1 where col1 in(select col2 from t2);
Si aucune condition n’est spécifiée, toutes les lignes de la table sont supprimées.
Exemples
Supprimez toutes les lignes de la table CATEGORY :
delete from category;
Supprimez des lignes avec des valeurs CATID comprises entre 0 et 9 de la table CATEGORY :
delete from category
where catid between 0 and 9;
Supprimez des lignes de la table LISTING dont les valeurs SELLERID n’existent pas dans la table SALES :
delete from listing
where listing.sellerid not in(select sales.sellerid from sales);
Les deux requêtes suivantes suppriment une ligne de la table CATEGORY, en fonction d’une jointure avec la table EVENT et d’une restriction supplémentaire sur la colonne CATID :
delete from category
using event
where event.catid=category.catid and category.catid=9;
delete from category
where catid in
(select category.catid from category, event
where category.catid=event.catid and category.catid=9);
La requête suivante supprime toutes les lignes de la vue matérialisée mv_cities
. Le nom de la vue matérialisée ici est un exemple :
delete from mv_cities;