PostgreSQL Eksisterer med Vælg, Indsæt, Opdater og Slet eksempel

Hvad findes i PostgreSQL?

PostgreSQL EXISTS operator tester, om en række(r) findes i en underforespørgsel. Det betyder, at operator bruges sammen med en underforespørgsel. De Eksisterer operator siges at være opfyldt, når mindst én række er fundet i underforespørgslen. Du kan bruge dette operasammen 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 operator 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 operator. Vi har folloenwing tabeller:

Bestil:

PostgreSQL Eksisterer med SELECT Statement

Pris:

PostgreSQL Eksisterer med SELECT Statement

Kør folloenwing udmelding:

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

Dette returnerer folloenwing:

PostgreSQL Eksisterer med SELECT Statement

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 EXISTS operator i en INSERT erklæring. Vi har folloenwing 3 borde:

Bestil:

PostgreSQL Eksisterer med INSERT Statement

Pris:

PostgreSQL Eksisterer med INSERT Statement

Pris 2:

PostgreSQL Eksisterer med INSERT Statement

Så kan vi køre folloenwing udmelding:

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:

PostgreSQL Eksisterer med INSERT Statement

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 operator i en UPDATE-erklæring.

Kør folloenwing 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);

Postgres eksisterer med UPDATE-erklæring

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 operator. Her er et eksempel:

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

Pristabellen er nu som følger:

Postgres findes med DELETE-erklæring

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

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

PostgreSQL Eksisterer erklæring ved hjælp af pgAdmin

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

PostgreSQL Eksisterer erklæring ved hjælp af pgAdmin

Det burde returnere folloenwing:

PostgreSQL Eksisterer erklæring ved hjælp af pgAdmin

Med INSERT Statement

For at opnå det samme gennem pgAdmin, gør dette:

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Eksisterer erklæring i PostgreSQL ved hjælp af pgAdmin

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.

Eksisterer erklæring i PostgreSQL ved hjælp af pgAdmin

Pristabellen skulle nu være som følger:

Eksisterer erklæring i PostgreSQL ved hjælp af pgAdmin

Med UPDATE-erklæring

For at opnå det samme gennem pgAdmin, gør dette:

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Eksisterer erklæring i PostgreSQL ved hjælp af pgAdmin

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.

PostgreSQL Eksisterer erklæring ved hjælp af pgAdmin

Pristabellen skulle nu være som følger:

PostgreSQL Eksisterer erklæring ved hjælp af pgAdmin

Med SLET-erklæring

For at opnå det samme gennem pgAdmin, gør dette:

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

PostgreSQL Eksisterer erklæring ved hjælp af pgAdmin

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.

PostgreSQL Eksisterer erklæring ved hjælp af pgAdmin

Pristabellen skulle nu være som følger:

PostgreSQL Eksisterer erklæring ved hjælp af pgAdmin

Resumé

  • Den EKSISTERER operator 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