DELETE - Amazon Redshift

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.

DELETE

Supprime les lignes des tables.

Note

La taille maximale d'une SQL instruction 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

WITHClause

Clause facultative qui en spécifie une ou plusieurs common-table-expressions. Consultez Clause WITH.

FROM

Le FROM mot clé est facultatif, sauf lorsque la USING clause est spécifiée. Les instructions delete from event; et delete event; les opérations équivalentes suppriment toutes les lignes du EVENT tableau.

Note

Pour supprimer toutes les lignes d’une table, TRUNCATE la table. TRUNCATEest beaucoup plus efficace que DELETE et ne nécessite pas de VACUUM mainANALYZE. Cependant, sachez que cela TRUNCATE valide la transaction dans laquelle elle est exécutée.

table_name

Table temporaire ou permanente. Seul le propriétaire de la table ou un utilisateur disposant de DELETE privilèges sur la table peut supprimer des lignes de la table.

Envisagez d'utiliser la TRUNCATE commande pour effectuer des opérations de suppression rapides et non qualifiées sur de grandes tables ; voirTRUNCATE.

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'DELETEinstruction fonctionne sur une vue matérialisée utilisée pourDiffusion de l'ingestion vers une vue matérialisée. Seul le propriétaire de la vue matérialisée ou un utilisateur disposant de DELETE privilèges sur la vue matérialisée peut en supprimer des lignes.

Vous ne pouvez pas utiliser DELETE une vue matérialisée pour l'ingestion de flux en continu avec une politique de sécurité (RLS) au niveau des lignes qui ne dispose pas de l'IGNORERLSautorisation accordée à l'utilisateur. Il existe une exception à cette règle : si l'utilisateur qui exécute le DELETE a IGNORE RLS accordé, il s'exécute correctement. Pour plus d'informations, consultez RLSla section Propriété et gestion des politiques.

USINGnom_table,...

Le USING mot clé est utilisé pour introduire une liste de tables lorsque des tables supplémentaires sont référencées dans la condition de WHERE clause. Par exemple, l'instruction suivante supprime toutes les lignes de la EVENT table qui répondent à la condition de jointure sur les SALES tables EVENT et. La SALES table doit être nommée explicitement dans la FROM liste :

delete from event using sales where event.eventid=sales.eventid;

Si vous répétez le nom de la table cible dans la USING clause, l'DELETEopération exécute une jointure automatique. Vous pouvez utiliser une sous-requête dans la WHERE clause au lieu de la USING syntaxe comme autre méthode pour écrire la même requête.

WHEREétat

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 référencer des tables autres que la cible de la DELETE commande. 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 du CATEGORY tableau :

delete from category;

Supprimez les lignes dont CATID les valeurs sont comprises entre 0 et 9 dans le CATEGORY tableau :

delete from category where catid between 0 and 9;

Supprimez les lignes de la LISTING table dont SELLERID les valeurs n'existent pas dans la SALES table :

delete from listing where listing.sellerid not in(select sales.sellerid from sales);

Les deux requêtes suivantes suppriment toutes deux une ligne de la CATEGORY table, en fonction d'une jointure à la EVENT table et d'une restriction supplémentaire sur la CATID colonne :

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;