PostgreSQL EKSISTERER med SELECT Operator (Eksempel)
โก Smart opsummering
PostgreSQL EXISTS er en boolsk operator, der tester, om en korreleret underforespรธrgsel returnerer en rรฆkke, hvilket gรธr det muligt for SELECT-, INSERT-, UPDATE- og DELETE-sรฆtninger effektivt at filtrere data efter tilstedevรฆrelsen eller fravรฆret af matchende poster.

Hvad EKSISTERER i PostgreSQL?
PostgreSQL EXISTS Operatoren tester, om en rรฆkke(r) findes i en underforespรธrgsel. Det betyder, at operatoren bruges sammen med en underforespรธrgsel. EXISTS-operatoren siges at vรฆre opfyldt, nรฅr mindst รฉn rรฆkke findes i underforespรธrgslen. Du kan bruge denne operation sammen med SELECT-, UPDATE-, INSERT- og DELETE-sรฆtninger.
PostgreSQL EXISTS-forespรธrgselssyntaks
Her er syntaksen for PostgreSQL EKSISTERER erklรฆring:
WHERE EXISTS (subquery);
Ovenstรฅende syntaks viser, at EXISTS-operatoren tager et argument ind, som er en underforespรธrgsel. Underforespรธrgslen er blot en SELECT erklรฆring der skal begynde med en SELECT * i stedet for en liste med kolonnenavne eller udtryk.
PostgreSQL EXISTS med SELECT-sรฆtning
Lad os se, hvordan man bruger en SELECT-sรฆtning med EXISTS-operatoren. Vi har fรธlgende tabeller:
Bestil:
Pris:
Kรธr fรธlgende sรฆtning:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Dette returnerer fรธlgende:
Ovenstรฅende kommando skal returnere alle poster i bogtabellen, hvis id matcher id'et for alle poster ved underforespรธrgslen. Kun รฉt id blev matchet. Derfor blev der kun returneret รฉn rekord.
PostgreSQL EXISTS med INSERT-sรฆtning
Vi kan bruge operatoren EXISTS i en INSERT erklรฆring. Vi har fรธlgende 3 tabeller:
Bestil:
Pris:
Pris 2:
Vi kan derefter kรธre fรธlgende sรฆtning:
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Pristabellen er nu som fรธlger:
Rรฆkken med et id pรฅ 5 i tabellen med navnet Price2 blev matchet. Denne post blev derefter indsat i pristabellen.
PostgreSQL EXISTS med UPDATE-sรฆtning
Vi kan bruge EXISTS-operatoren i en UPDATE-sรฆtning.
Kรธr fรธlgende forespรธrgsel:
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
Vi opdaterer priskolonnen i pristabellen. Vores mรฅl er at fรฅ priserne pรฅ varer, der deler et id, at vรฆre de samme. Kun รฉn rรฆkke blev matchet, det vil sige 5.
Men da priserne er ens, det vil sige 205, blev der ikke foretaget nogen opdatering. Hvis der var en forskel, ville der vรฆre foretaget en opdatering.
PostgreSQL EXISTS med DELETE-sรฆtning
A PostgreSQL DELETE-sรฆtningen kan bruge EXISTS-operatoren. Her er et eksempel:
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Pristabellen er nu som fรธlger:
Rรฆkken med et id pรฅ 5 er blevet slettet.
PostgreSQL EXISTS-sรฆtning ved hjรฆlp af pgAdmin
Ud over SQL-shellen kan de samme EXISTS-forespรธrgsler udfรธres visuelt via pgAdmin-grรฆnsefladen. Lad os nu se, hvordan disse handlinger kan udfรธres ved hjรฆlp af pgAdmin:
Med SELECT-sรฆtning
Nedenfor er trinnene til at bruge en EXISTS-forespรธrgsel i PostgreSQL med en SELECT-sรฆtning ved hjรฆlp af pgAdmin:
Trin 1) Log ind pรฅ din pgAdmin-konto. ร bn pgAdmin, og log ind pรฅ din konto med dine loginoplysninger.
Trin 2) Opret en demodatabase.
- Klik pรฅ Databaser i navigationslinjen til venstre.
- Klik pรฅ Demo.
Trin 3) Indtast nedenstรฅende forespรธrgsel i forespรธrgselseditoren:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Trin 4) Klik pรฅ knappen Udfรธr.
Det skal returnere fรธlgende:
Med INSERT Statement
For at opnรฅ det samme gennem pgAdmin, gรธr dette:
Trin 1) Log ind pรฅ din pgAdmin-konto.
Trin 2)
- Klik pรฅ Databaser i navigationslinjen til venstre.
- Klik pรฅ Demo.
Trin 3) Indtast forespรธrgslen i forespรธrgselseditoren:
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Trin 4) Klik pรฅ knappen Udfรธr.
Pristabellen skulle nu vรฆre som fรธlger:
Med UPDATE-erklรฆring
For at opnรฅ det samme gennem pgAdmin, gรธr dette:
Trin 1) Log ind pรฅ din pgAdmin-konto.
Trin 2)
- Klik pรฅ Databaser i navigationslinjen til venstre.
- Klik pรฅ Demo.
Trin 3) Indtast forespรธrgslen i forespรธrgselseditoren:
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
Trin 4) Klik pรฅ knappen Udfรธr.
Pristabellen skulle nu vรฆre som fรธlger:
Med SLET-erklรฆring
For at opnรฅ det samme gennem pgAdmin, gรธr dette:
Trin 1) Log ind pรฅ din pgAdmin-konto.
Trin 2)
- Klik pรฅ Databaser i navigationslinjen til venstre.
- Klik pรฅ Demo.
Trin 3) Indtast forespรธrgslen i forespรธrgselseditoren:
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Trin 4) Klik pรฅ knappen Udfรธr.
Pristabellen skulle nu vรฆre som fรธlger:
Download databasen brugt i denne vejledning





















