Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
DELETE
Elimina le righe dalle tabelle.
Nota
Le dimensioni massime per una istruzione SQL è di 16 MB.
Sintassi
[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] DELETE [ FROM ] { table_name | materialized_view_name } [ { USING } table_name, ... ] [ WHERE condition ]
Parametri
- Clausola WITH
Clausola facoltativa che ne specifica uno o più. common-table-expressions Per informazioni, consulta Clausola WITH.
- FROM
-
La parola chiave FROM è facoltativa eccetto quando la clausola USING è specificata. Le istruzioni
delete from event;
edelete event;
sono operazioni equivalenti che rimuovono tutte le righe della tabella EVENT.Nota
Per eliminare tutte le righe da una tabella, usa il comando TRUNCATE sulla tabella. TRUNCATE è molto più efficiente di DELETE e non richiede VACUUM e ANALYZE. Tuttavia, tieni presente che TRUNCATE esegue il commit della transazione in cui viene eseguito.
- table_name
-
Tabella temporanea o persistente. Solo il proprietario della tabella o un utente con il privilegio DELETE sulla tabella può eliminare le righe dalla tabella.
Prendi in considerazione l'utilizzo del comando TRUNCATE per le operazioni di eliminazione rapida non qualificate su tabelle di grandi dimensioni; vedi TRUNCATE.
Nota
Dopo aver eliminato un numero elevato di righe da una tabella:
-
Applica l'operazione di vacuum alla tabella per recuperare spazio di memorizzazione e riordinare le righe.
-
Analizza la tabella per aggiornare le statistiche del pianificatore di query.
-
- materialized_view_name
-
Una vista materializzata. L'istruzione DELETE funziona su una vista materializzata utilizzata per Inserimento in streaming su una vista materializzata. Solo il proprietario della vista materializzata o un utente con privilegio DELETE sulla vista materializzata può eliminare righe dalla vista materializzata.
Non puoi eseguire DELETE su una vista materializzata per l'importazione dati in streaming con una policy di sicurezza a livello di riga (RLS) che non prevede l'autorizzazione IGNORE RLS concessa all'utente. C'è un'eccezione: se all'utente che esegue l'operazione DELETE è stata concessa la licenza IGNORE RLS, l'operazione viene eseguita correttamente. Per ulteriori informazioni, consulta Proprietà e gestione delle policy RLS.
- USING table_name, ...
-
La parola chiave USING viene utilizzata per introdurre un elenco di tabelle quando si fa riferimento a tabelle aggiuntive nella condizione della clausola WHERE. Ad esempio, la seguente istruzione elimina tutte le righe dalla tabella EVENT che soddisfano la condizione di join sulle tabelle EVENT e SALES. La tabella SALES deve essere esplicitamente citata nell'elenco FROM:
delete from event using sales where event.eventid=sales.eventid;
Se ripeti il nome della tabella di destinazione nella clausola USING, l'operazione DELETE esegue un self join. Puoi utilizzare una sottoquery nella clausola WHERE anziché la sintassi USING come metodo alternativo per scrivere la stessa query.
- WHERE condition
-
Clausola facoltativa che limita l'eliminazione delle righe a quelle che corrispondono alla condizione. Ad esempio, la condizione può essere una restrizione su una colonna, una condizione di join o una condizione basata sul risultato di una query. La query può fare riferimento a tabelle diverse da quella di destinazione del comando DELETE. Ad esempio:
delete from t1 where col1 in(select col2 from t2);
Se non viene specificata alcuna condizione, vengono eliminate tutte le righe della tabella.
Esempi
Elimina tutte le righe dalla tabella CATEGORY:
delete from category;
Elimina le righe con valori CATID compresi tra 0 e 9 dalla tabella CATEGORY:
delete from category where catid between 0 and 9;
Elimina le righe dalla tabella LISTING i cui valori SELLERID non esistono nella tabella SALES:
delete from listing where listing.sellerid not in(select sales.sellerid from sales);
Le due query seguenti eliminano entrambe una riga dalla tabella CATEGORY, in base a un join alla tabella EVENT e a un'ulteriore limitazione sulla colonna 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 seguente query elimina tutte le righe dalla vista materializzata mv_cities
. Il nome della vista materializzata in questo esempio è un esempio:
delete from mv_cities;