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
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:
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:
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:
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:
Prezzo:
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:
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
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
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
Passaggio 5) Controlla se la riga è eliminata
Controlliamo se la cancellazione è avvenuta con successo:
Con due condizioni
Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
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.
Passo 5) Controlliamo se la cancellazione è avvenuta con successo:
Utilizzo della condizione EXISTS
Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
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.
Passo 5) Controlliamo se la cancellazione è avvenuta con successo:
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