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:

PostgreSQL Eksisterer med SELECT Statement

Pris:

PostgreSQL Eksisterer med SELECT Statement

Kør følgende sætning:

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

Dette returnerer følgende:

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 operatoren EXISTS i en INSERT erklæring. Vi har følgende 3 tabeller:

Bestil:

PostgreSQL Eksisterer med INSERT Statement

Pris:

PostgreSQL Eksisterer med INSERT Statement

Pris 2:

PostgreSQL Eksisterer med INSERT Statement

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:

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-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);

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-operatoren. 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 skal returnere følgende:

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é

  • 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