Čo je PostgreSQL?
Operátor EXISTUJE, či v poddotazu existujú riadky. To znamená, že operátor sa používa spolu s poddotazom. Operátor Exists je údajne splnený, keď sa v poddotazu nájde aspoň jeden riadok. Túto operáciu môžete použiť spolu s príkazmi SELECT, UPDATE, INSERT a DELETE.
V tomto výučbe PostgreSQL sa dozviete toto:
- Syntax
- S príkazom SELECT
- S výpisom INSERT
- S výpisom UPDATE
- S príkazom DELETE
- S pgAdmin
Syntax
Tu je syntax príkazu PostgreSQL EXISTUJE:
WHERE EXISTS (subquery);
Vyššie uvedená syntax ukazuje, že operátor EXISTUJE argument, ktorý je poddotazom. Poddotaz je jednoducho príkaz SELECT, ktorý by mal začínať výrazom SELECT * namiesto zoznamu názvov alebo výrazov stĺpcov.
S príkazom SELECT
Pozrime sa, ako používať príkaz SELECT s operátorom EXISTUJE. Máme nasledujúce tabuľky:
Kniha:
Cena:
Spustite nasledujúce vyhlásenie:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Takto sa vráti toto:
Vyššie uvedený príkaz by mal vrátiť všetky záznamy v tabuľke Book, ktorých id sa zhoduje s id akýchkoľvek záznamov podľa poddotazu. Zhodilo sa iba jedno ID. Preto bol vrátený iba jeden záznam.
S výpisom INSERT
Operátor EXISTU môžeme použiť vo vyhlásení INSERT. Máme nasledujúce 3 tabuľky:
Kniha:
Cena:
Cena 2:
Potom môžeme spustiť nasledujúce vyhlásenie:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Cenová tabuľka je teraz nasledovná:
Riadok s id 5 v tabuľke s názvom Price2 bol zhodný. Tento záznam bol potom vložený do tabuľky cien.
S výpisom UPDATE
Operátor EXISTU môžeme použiť vo výpise UPDATE.
Spustite nasledujúci dotaz:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Aktualizujeme stĺpec ceny tabuľky cien. Naším cieľom je, aby ceny položiek zdieľajúcich ID boli rovnaké. Zhodil sa iba jeden riadok, to znamená 5.
Pretože sú však ceny rovnaké, teda 205, nedošlo k nijakej aktualizácii. Ak by nastal rozdiel, bola by vykonaná aktualizácia.
S príkazom DELETE
Príkaz PostgreSQL DELETE môže používať operátor EXISTUJE. Tu je príklad:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Cenová tabuľka je teraz nasledovná:
Riadok s id 5 bol odstránený.
S pgAdmin
Teraz sa pozrime, ako je možné tieto akcie vykonať pomocou pgAdmin.
S príkazom SELECT
To isté dosiahnete prostredníctvom pgAdmin:
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Krok 4) Kliknite na tlačidlo Vykonať.
Mal by vrátiť nasledujúce:
S výpisom INSERT
To isté dosiahnete prostredníctvom pgAdmin:
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Krok 4) Kliknite na tlačidlo Vykonať.
Cenová tabuľka by teraz mala byť nasledovná:
S výpisom UPDATE
To isté dosiahnete prostredníctvom pgAdmin:
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Krok 4) Kliknite na tlačidlo Vykonať.
Cenová tabuľka by teraz mala byť nasledovná:
S príkazom DELETE
To isté dosiahnete prostredníctvom pgAdmin:
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Krok 4) Kliknite na tlačidlo Vykonať.
Cenová tabuľka by teraz mala byť nasledovná:
Zhrnutie
- Operátor EXISTUJE, či v poddotazu existujú riadky.
- Používa sa s poddotazom a údajne sa splnilo, keď poddotaz vráti aspoň jeden riadok.
- Používa sa spolu s príkazmi SELECT, UPDATE, INSERT a DELETE.
Stiahnite si databázu použitú v tomto výučbe