PostgreSQL ELIMINA le righe dalla selezione

โšก Riepilogo intelligente

PostgreSQL L'istruzione DELETE rimuove una o piรน righe da una tabella, e se abbinata a una clausola WHERE seleziona solo i record che soddisfano una determinata condizione, mentre omettendo WHERE vengono eliminate tutte le righe della tabella.

  • ๐Ÿ“‹ Sintassi: L'istruzione DELETE FROM table WHERE condition rimuove le righe corrispondenti, mentre RETURNING puรฒ restituire i dati eliminati.
  • ๐ŸŽฏ Una condizione: Una singola clausola WHERE elimina solo le righe che soddisfano un determinato test.
  • โž• Due condizioni: Unire due test con l'operatore AND restringe l'eliminazione a righe precise.
  • ๐Ÿ”— Clausola ESISTE: La clausola EXISTS elimina le righe in una tabella in base ai record corrispondenti in un'altra tabella.
  • ๏ธ pgAdmin: Le stesse query di eliminazione vengono eseguite visivamente tramite l'editor di query di pgAdmin.
  • ๐Ÿค– Sicurezza dell'IA: Gli assistenti basati sull'intelligenza artificiale aggiungono la clausola WHERE corretta e avvisano prima di eliminare intere tabelle.

PostgreSQL Elimina righe dalla selezione

Elimina query in PostgreSQL

Migliori istruzione DELETE in PostgreSQL viene utilizzato per eliminare uno o piรน record da una tabella. Per eliminare solo le righe selezionate da una tabella, PostgreSQL Consente di combinare l'istruzione DELETE con la clausola WHERE; altrimenti, elimina tutti i record nella tabella.

PostgreSQL Sintassi della query di eliminazione

L'istruzione DELETE puรฒ essere definita utilizzando la sintassi seguente:

[ WITH [ RECURSIVE ] with-query [, ...] ]
DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ]
    [ USING using-list ]
    [ WHERE condition(s) | WHERE CURRENT OF cursor-name]
    [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]

Scheda Sintetica

Sono disponibili i seguenti parametri:

  • con-queryLa clausola WITH consente di fare riferimento a una o piรน sottoquery per nome all'interno della query DELETE.
  • nome-tabella: il nome della tabella da cui si vogliono eliminare i record.
  • alias: un sostituto per il nome della tabella di destinazione.
  • lista di utilizzo: espressioni di tabella che consentono di utilizzare colonne di altre tabelle nella clausola WHERE.
  • condizione(i): facoltativo. Queste sono le condizioni che devono essere soddisfatte affinchรฉ i record vengano eliminati. Se questa sezione non viene fornita, tutti i record del nome della tabella verranno eliminati.
  • nome-cursore: il cursore da utilizzare nella condizione WHERE CURRENT OF. L'ultima riga recuperata da questo cursore verrร  eliminata.
  • espressione-output: l'espressione da elaborare e restituire dall'istruzione DELETE dopo l'eliminazione di ogni riga.
  • nome-uscita: il nome da utilizzare per la colonna restituita.

Si noti che, poichรฉ l'istruzione DELETE elimina l'intera riga, non รจ necessario specificare i nomi delle colonne.

PostgreSQL Elimina query con una condizione

L'istruzione DELETE puรฒ essere utilizzata con una singola condizione, che viene definita tramite la clausola WHERE. Si consideri la tabella Prezzi con i seguenti dati:

Prezzo:

PostgreSQL Elimina query con una condizione

Eliminiamo il record con un ID 4:

DELETE FROM Price
WHERE id = 4;

Il comando sopra riportato elimina i record con ID pari a 4. Verifichiamo se l'eliminazione รจ andata a buon fine:

PostgreSQL Elimina query con una condizione

La riga con ID 4 รจ stata eliminata.

Elimina query con due condizioni

Migliori PostgreSQL L'istruzione DELETE puรฒ anche accettare due condizioni. Le due condizioni devono essere unite utilizzando l'operatore AND. Useremo la seguente tabella:

Prezzo:

PostgreSQL Elimina query con due condizioni

Considera l'esempio riportato di seguito:

DELETE FROM Price
WHERE id = 3
AND price = 300;

Nel comando precedente, eliminiamo la riga in cui l'ID รจ 3 e il prezzo รจ 300. Ora possiamo interrogare la tabella:

SELECT * FROM Price;

Questo restituisce quanto segue:

PostgreSQL Elimina query con due condizioni

Il record con ID 3 e prezzo 300 รจ stato eliminato.

PostgreSQL Query di eliminazione tramite condizione EXISTS

Grazie alla ESISTE In determinate condizioni, รจ possibile rendere l'operazione DELETE piรน complessa. Talvolta potrebbe essere necessario eliminare record in una tabella in base ai record presenti in un'altra tabella.

Poichรฉ la clausola FROM non consente di elencare record provenienti da piรน di una tabella durante un'operazione di eliminazione, la clausola EXISTS risulta molto utile. Abbiamo le seguenti due tabelle:

Libro:

PostgreSQL Query di eliminazione tramite condizione EXISTS

Prezzo:

PostgreSQL Query di eliminazione tramite condizione EXISTS

Possiamo quindi eseguire la seguente query:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

Il comando elimina dalla tabella Book le righe che hanno un ID corrispondente nella tabella Price con un prezzo inferiore a 250.

La tabella Libro ora รจ la seguente:

PostgreSQL Query di eliminazione tramite condizione EXISTS

Il record con ID 1 รจ stato eliminato.

Come eliminare una riga in PostgreSQL utilizzando pgAdmin

Le stesse query di eliminazione possono essere eseguite anche visivamente tramite l'interfaccia pgAdmin, seguendo i passaggi indicati di seguito:

Con una condizione

Passo 1) Accedi al tuo account pgAdmin. Apri pgAdmin ed effettua l'accesso utilizzando le tue credenziali.

Passo 2) Crea un database di prova.

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

Elimina riga in PostgreSQL utilizzando pgAdmin

Passo 3) Digita la query seguente nell'editor di query:

DELETE FROM Price
WHERE id = 4;

Passo 4) Fare clic sul pulsante Esegui.

Elimina riga in PostgreSQL utilizzando pgAdmin

Passo 5) Verifichiamo se la riga รจ stata eliminata:

Elimina riga in PostgreSQL utilizzando pgAdmin

Con due condizioni

Passo 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

Elimina riga in PostgreSQL utilizzando pgAdmin

Passo 3) Digita la query nell'editor di query:

DELETE FROM Price
WHERE id = 3
AND price = 300;

Passo 4) Fare clic sul pulsante Esegui.

Elimina riga in PostgreSQL utilizzando pgAdmin

Passo 5) Controlliamo se la cancellazione รจ avvenuta con successo:

Elimina riga in PostgreSQL utilizzando pgAdmin

Utilizzo della condizione EXISTS

Passo 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

Elimina riga utilizzando la condizione EXISTS in pgAdmin

Passo 3) Digita la query nell'editor di query:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

Passo 4) Fare clic sul pulsante Esegui.

Elimina riga utilizzando la condizione EXISTS in pgAdmin

Passo 5) Controlliamo se la cancellazione รจ avvenuta con successo:

Elimina riga utilizzando la condizione EXISTS in pgAdmin

Scarica il database utilizzato in questo tutorial

DOMANDE FREQUENTI

TRUNCATE rimuove istantaneamente tutte le righe e reimposta lo spazio di archiviazione, ma ignora le clausole WHERE e i trigger per riga. DELETE rimuove le righe selezionate utilizzando una clausola WHERE, attiva i trigger di riga e puรฒ essere annullato all'interno di una transazione.

Aggiungi una clausola USING: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. Questa clausola unisce la seconda tabella ed elimina le righe corrispondenti, fornendo lo stesso risultato di EXISTS con una sintassi piรน chiara, simile a quella di un'unione.

RETURNING restituisce le colonne delle righe appena eliminate nella stessa istruzione. Scrivi DELETE FROM Price WHERE id = 4 RETURNING *, e PostgreSQL restituisce i dati rimossi in modo che le applicazioni possano registrare o confermare la modifica.

Sรฌ. Inserisci l'operazione DELETE in una transazione con BEGIN, quindi esegui ROLLBACK per annullarla o COMMIT per mantenerla. Fino al momento del commit, le righe rimosse possono essere ripristinate, proteggendo cosรฌ da cancellazioni accidentali.

Mantieni una copia per gruppo utilizzando la colonna nascosta ctid: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. In questo modo vengono rimosse le righe duplicate mantenendo un singolo record.

Esegui prima lo stesso filtro come SELECT oppure apri una transazione con BEGIN e usa RETURNING per esaminare le righe interessate. RevVisualizzare il risultato della clausola WHERE prima del COMMIT impedisce di eliminare piรน righe del previsto.

Gli assistenti basati sull'IA traducono le regole in linguaggio naturale in un'istruzione DELETE con la clausola WHERE corretta, suggeriscono EXISTS o USING per le eliminazioni tra tabelle e segnalano le istruzioni che non includono una condizione necessaria per svuotare l'intera tabella.

Sรฌ. Un assistente AI esamina ogni DELETE, avvisa quando manca la clausola WHERE e consiglia una transazione o un'anteprima RETURNING, riducendo il rischio di una cancellazione accidentale dell'intera tabella.

Riassumi questo post con: