Hvad er postgraduate?
operatoren eksisterer tester, om der findes en række(r) i en underforespørgsel. Dette betyder, at operatøren bruges sammen med en underforespørgsel. Den eksisterende operatør siges at være opfyldt, når mindst en række findes i underforespørgslen. Du kan bruge denne handling sammen med vælg, Opdater, Indsæt og slet udsagn.
i denne Postgraduate Tutorial vil du lære følgende:
- syntaks
- med SELECT Statement
- med INSERT Statement
- med UPDATE Statement
- med DELETE Statement
- med pgAdmin
syntaks
her er syntaksen for postgreskl eksisterer erklæring:
WHERE EXISTS (subquery);
ovenstående syntaks viser, at den eksisterende operatør tager et argument, som er en underforespørgsel. Underforespørgslen er simpelthen en SELECT-sætning, der skal begynde med en SELECT * i stedet for en liste over kolonnenavne eller udtryk.
med SELECT-sætning
lad se, hvordan du bruger en SELECT-sætning med operatoren eksisterer. Vi har følgende tabeller:
Bestil:
pris:
Kør følgende erklæring:
SELECT *FROM BookWHERE 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 et id blev matchet. Derfor blev kun en rekord returneret.
med Indsæt Erklæring
kan vi bruge den eksisterende operatør i en indsæt erklæring. Vi har følgende 3 tabeller:
Bestil:
pris:
Pris2:
vi kan derefter køre følgende erklæring:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE 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.
med OPDATERINGSERKLÆRING
kan vi bruge operatoren eksisterer i en OPDATERINGSERKLÆRING.
Kør følgende forespørgsel:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
vi opdaterer priskolonnen i pristabellen. Vores mål er at få priserne på varer, der deler et id, til at være de samme. Kun en 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.
med DELETE Statement
kan en POSTGRESKL DELETE statement bruge operatoren eksisterer. Her er et eksempel:
DELETE FROM PriceWHERE 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.
med pgAdmin
lad os nu se, hvordan disse handlinger kan udføres ved hjælp af pgAdmin.
med SELECT-sætning
for at opnå det samme gennem pgAdmin skal du gøre dette:
Trin 1) Log ind på din pgAdmin-konto.
Trin 2)
- fra navigationslinjen til venstre-klik på databaser.
- Klik Demo.
Trin 3) Skriv forespørgslen i forespørgselseditoren:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Trin 4) Klik på knappen Udfør.
det skal returnere følgende:
med Indsæt Erklæring
for at opnå det samme gennem pgAdmin skal du gøre dette:
Trin 1) Log ind på din pgAdmin-konto.
Trin 2)
- fra navigationslinjen til venstre-klik på databaser.
- Klik Demo.
Trin 3) Skriv forespørgslen i forespørgselseditoren:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Trin 4) Klik på knappen Udfør.
pristabellen skal nu være som følger:
med OPDATERINGSERKLÆRING
for at opnå det samme gennem pgAdmin skal du gøre dette:
Trin 1) Log ind på din pgAdmin-konto.
Trin 2)
- fra navigationslinjen til venstre-klik på databaser.
- Klik Demo.
Trin 3) Skriv forespørgslen i forespørgselseditoren:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Trin 4) Klik på knappen Udfør.
pristabellen skal nu være som følger:
med slet sætning
for at opnå det samme gennem pgAdmin skal du gøre dette:
Trin 1) Log ind på din pgAdmin-konto.
Trin 2)
- fra navigationslinjen til venstre-klik på databaser.
- Klik Demo.
Trin 3) Skriv forespørgslen i forespørgselseditoren:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Trin 4) Klik på knappen Udfør.
pristabellen skal nu være som følger:
Resume
- operatoren eksisterer tester, om der findes en række(r) i en underforespørgsel.
- det bruges med en underforespørgsel og siges at være opfyldt, når underforespørgslen returnerer mindst en række.
- det bruges sammen med select, UPDATE, INSERT og DELETE udsagn.
Hent den Database, der anvendes i denne Tutorial