Che cosa è PostgreSQL esiste?
L’operatore EXISTS verifica se esiste una o più righe in una sottoquery. Ciò significa che l’operatore viene utilizzato insieme a una sottoquery. Si dice che l’operatore Exists sia stato soddisfatto quando almeno una riga viene trovata nella sottoquery. È possibile utilizzare questa operazione insieme alle istruzioni SELECT, UPDATE, INSERT e DELETE.
In questo tutorial PostgreSQL, imparerai quanto segue:
- Sintassi
- Con l’Istruzione SELECT
- Con l’Istruzione INSERT
- Con l’Istruzione UPDATE
- Con l’Istruzione DELETE
- Con pgAdmin
Sintassi
Ecco la sintassi per PostgreSQL ESISTE affermazione:
WHERE EXISTS (subquery);
La sintassi precedente mostra che l’operatore EXISTS prende in un argomento, che è una sottoquery. La sottoquery è semplicemente un’istruzione SELECT che dovrebbe iniziare con un SELECT * invece di un elenco di nomi di colonne o espressioni.
Con l’istruzione SELECT
Vediamo come utilizzare un’istruzione SELECT con l’operatore EXISTS. Abbiamo le seguenti tabelle:
Libro:
Prezzo:
Eseguire la seguente istruzione:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Questo restituisce il seguente:
Il comando di cui sopra dovrebbe restituire tutti i record nel Libro della tabella di cui id corrisponde l’id di un record da una sottoquery. Solo un id è stato abbinato. Quindi, è stato restituito solo un record.
Con l’istruzione INSERT
Possiamo utilizzare l’operatore EXISTS in un’istruzione INSERT. Abbiamo i seguenti 3 tabelle:
Libro:
Prezzo:
Price2:
Siamo in grado di eseguire la seguente istruzione:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Il Prezzo in tabella è il seguente:
La riga con id 5 nella tabella denominata Price2 è stato trovato. Questo record è stato quindi inserito nella tabella dei prezzi.
Con l’istruzione UPDATE
Possiamo utilizzare l’operatore EXISTS in un’istruzione UPDATE.
Eseguire la seguente query:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Stiamo aggiornando la colonna dei prezzi della tabella dei prezzi. Il nostro obiettivo è quello di avere i prezzi degli articoli che condividono un ID per essere lo stesso. Solo una riga è stata abbinata, cioè 5.
Tuttavia, poiché i prezzi sono uguali, cioè 205, non è stato effettuato alcun aggiornamento. Se ci fosse stata una differenza, sarebbe stato fatto un aggiornamento.
Con l’istruzione DELETE
Un’istruzione PostgreSQL DELETE può utilizzare l’operatore EXISTS. Ecco un esempio:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
La tabella dei prezzi è ora la seguente:
La riga con un ID pari a 5 è stata eliminata.
Con pgAdmin
Ora vediamo come queste azioni possono essere eseguite usando pgAdmin.
Con l’istruzione SELECT
Per ottenere lo stesso risultato tramite pgAdmin, fai questo:
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione sui database del tasto sinistro del mouse.
- Clicca Demo.
Passo 3) Digitare la query nell’editor di query:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Passo 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Con l’istruzione INSERT
Per ottenere lo stesso risultato tramite pgAdmin, fai questo:
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione sui database del tasto sinistro del mouse.
- Clicca Demo.
Passo 3) Digitare la query nell’editor di query:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Passaggio 4) Fare clic sul pulsante Esegui.
La tabella dei prezzi dovrebbe ora essere la seguente:
Con l’istruzione UPDATE
Per ottenere lo stesso risultato tramite pgAdmin, fai questo:
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione sui database del tasto sinistro del mouse.
- Clicca Demo.
Passo 3) Digitare la query nell’editor di query:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Passo 4) Fare clic sul pulsante Esegui.
La tabella dei prezzi dovrebbe ora essere la seguente:
Con l’istruzione DELETE
Per ottenere lo stesso risultato tramite pgAdmin, fai questo:
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione sui database del tasto sinistro del mouse.
- Clicca Demo.
Passo 3) Digitare la query nell’editor di query:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Passo 4) Fare clic sul pulsante Esegui.
La tabella dei prezzi dovrebbe ora essere la seguente:
Riepilogo
- L’operatore EXISTS verifica se esiste una o più righe in una sottoquery.
- Viene utilizzato con una subquery e si dice che sia stata soddisfatta quando la subquery restituisce almeno una riga.
- Viene utilizzato insieme alle istruzioni SELECT, UPDATE, INSERT e DELETE.
Scarica il database utilizzato in questo Tutorial