PostgreSQL Eksisterer med Vælg, Indsæt, Opdater og Slet eksempel
Hvad findes i PostgreSQL?
PostgreSQL EXISTS operatør tester, om en række(r) findes i en underforespørgsel. Det betyder, at operatoren bruges sammen med en underforespørgsel. Operatoren Exists siges at være opfyldt, når der findes mindst én række i underforespørgslen. Du kan bruge denne operation sammen med SELECT-, UPDATE-, INSERT- og DELETE-sætninger.
Postgres eksisterer 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 Eksisterer med SELECT Statement
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 Eksisterer med INSERT Statement
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.
Postgres eksisterer med UPDATE-erklæring
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.
Postgres findes med DELETE-erklæring
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 Eksisterer erklæring ved hjælp af pgAdmin
Lad os nu se, hvordan disse handlinger kan udføres ved hjælp af pgAdmin:
Sådan bruges Exists Query i PostgreSQL med SELECT Statement ved hjælp af pgAdmin
Nedenfor er trinene til at bruge Exists-forespørgslen i PostgreSQL med SELECT-sætning ved hjælp af pgAdmin:
Trin 1) Log ind på din pgAdmin-konto
Åbn pgAdmin og log ind på din konto ved hjælp af dine legitimationsoplysninger
Trin 2) Opret en demodatabase
- Fra navigationslinjen til venstre - Klik på Databaser.
- Klik på Demo.
Trin 3) Indtast forespørgslen
Indtast nedenstående forespørgsel i forespørgselseditoren:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Trin 4) Udfør forespørgslen
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)
- Fra navigationslinjen til venstre - Klik på Databaser.
- 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)
- Fra navigationslinjen til venstre - Klik på Databaser.
- 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)
- Fra navigationslinjen til venstre - Klik på Databaser.
- 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:
Resumé
- EXISTS-operatoren tester, om en række(r) findes i en underforespørgsel.
- Det bruges sammen med en underforespørgsel og siges at være opfyldt, når underforespørgslen returnerer mindst én række.
- Det bruges sammen med SELECT-, UPDATE-, INSERT- og DELETE-sætninger.
Download databasen brugt i denne vejledning