PostgreSQL Elimina query (elimina righe dalla selezione)

Elimina query in PostgreSQL

Elimina dichiarazione in PostgreSQL viene utilizzato per eliminare uno o più record da una tabella. Se desideri eliminare righe selezionate da una tabella PostgreSQL ti consente di combinare l'istruzione DELETE con la clausola WHERE altrimenti cancellerà tutti i record.

Postgres Elimina la sintassi della query

L'istruzione DELETE può essere definita dalla 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] [, ...] ]

parametri

  • con-query: la clausola WITH ci consente di fare riferimento a una o più sottoquery a cui fare riferimento per nome nella query DELETE.
  • nome-tabella: il nome della tabella da cui si vogliono eliminare i record.
  • alias: questo è un sostituto del nome della tabella di destinazione.
  • using-list: espressioni di tabella per consentire l'utilizzo di colonne di altre tabelle nella clausola WHERE.
  • condizione/i: opzionale. Sono le condizioni che devono essere soddisfatte affinché i record vengano cancellati. Se questa sezione non viene fornita, tutti i record dei nomi di 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.

Tieni presente 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. La condizione viene impostata tramite la clausola WHERE. Si consideri la tabella Price 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 precedente eliminerà i record in cui l'ID è 4. Confermiamo se l'eliminazione ha avuto successo:

PostgreSQL Elimina query con una condizione

La riga con ID 4 è stata eliminata.

Elimina query con due condizioni

PostgreSQL L'istruzione DELETE può assumere due condizioni. Le due condizioni devono essere unite tramite l'operatore AND. Utilizzeremo la seguente tabella:

Prezzo:

PostgreSQL Elimina query con due condizioni

Considera l'esempio riportato di seguito:

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

Nel comando precedente, stiamo cancellando la riga in cui l'id è 3 e il prezzo è 300. Ora possiamo interrogare la tabella:

SELECT * FROM Price

Restituisce quanto segue:

PostgreSQL Elimina query con due condizioni

Il record con ID 3 e prezzo 300 è stato eliminato.

PostgreSQL Elimina la query utilizzando la condizione esistente

Con la condizione EXISTS, puoi rendere DELETE più complesso. A volte, potrebbe essere necessario eliminare record in una tabella in base ai record in un'altra tabella.

Vedrai che la clausola FROM non ti consente di elencare record da più di una tabella quando esegui l'eliminazione, la clausola EXISTS diventa molto utile. Abbiamo le seguenti due tabelle:

Libro:

PostgreSQL Elimina la query utilizzando la condizione esistente

Prezzo:

PostgreSQL Elimina la query utilizzando la condizione esistente

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 precedente eliminerà dalla tabella Libro dove esiste un record nella tabella Prezzo con un ID corrispondente a quello della tabella Libro e il prezzo è inferiore a 250.

La tabella Libro ora è la seguente:

PostgreSQL Elimina la query utilizzando la condizione esistente

Il record con ID 1 è stato eliminato.

Come eliminare una riga in PostgreSQL utilizzando pgAdmin

Di seguito sono riportati i passaggi per eliminare una riga in PostgreSQL utilizzando pgAdmin:

Con una condizione

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

Passaggio 1) Accedi al tuo account pgAdmin

Apri pgAdmin e accedi al tuo account utilizzando le tue credenziali

Passaggio 2) Creare un database dimostrativo

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

Elimina riga in PostgreSQL

Passaggio 3) Digitare la query

Digita la query seguente nell'editor di query:

DELETE FROM Price
WHERE id = 4;

Passaggio 4) Eseguire la query

Fare clic sul pulsante Esegui

Elimina riga in PostgreSQL

Passaggio 5) Controlla se la riga è eliminata

Controlliamo se la cancellazione è avvenuta con successo:

Elimina riga in PostgreSQL

Con due condizioni

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

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

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

Passo 5) Controlliamo se la cancellazione è avvenuta con successo:

Elimina riga in PostgreSQL

Utilizzo della condizione EXISTS

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

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

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

Passo 5) Controlliamo se la cancellazione è avvenuta con successo:

Elimina riga utilizzando la condizione EXISTS

Sommario

  • L'istruzione DELETE viene utilizzata per eliminare uno o più record da una tabella.
  • Per eliminare solo determinate righe da una tabella, è possibile combinare l'istruzione DELETE con la clausola WHERE.
  • Se la clausola DELETE viene utilizzata senza la clausola WHERE, elimina tutti i record dalla tabella.
  • Il parametro table-name consente di aggiungere il nome della tabella da cui eliminare i record.
  • Possiamo utilizzare l'istruzione DELETE con una condizione, specificata utilizzando la clausola WHERE.
  • L'istruzione DELETE può essere utilizzata anche con due condizioni specificate nella clausola WHERE. Le due condizioni devono essere unite utilizzando l'operatore AND.
  • ESISTE La condizione può aiutarci a eliminare i record da una tabella in base ai record di un'altra tabella.

Scarica il database utilizzato in questo tutorial