Co je PostgreSQL?
Operátor EXISTUJE, zda v poddotazu existují řádky. To znamená, že operátor se používá společně s poddotazem. Provozovatel Exists se říká, že byl splněn, když je v poddotazu nalezen alespoň jeden řádek. Tuto operaci můžete použít spolu s příkazy SELECT, UPDATE, INSERT a DELETE.
V tomto výukovém programu PostgreSQL se naučíte následující:
- Syntax
- S příkazem SELECT
- S výpisem INSERT
- S výpisem UPDATE
- S příkazem DELETE
- S pgAdmin
Syntax
Zde je syntaxe příkazu PostgreSQL EXISTS:
WHERE EXISTS (subquery);
Výše uvedená syntaxe ukazuje, že operátor EXISTU vezme argument, který je poddotazem. Poddotaz je jednoduše příkazem SELECT, který by měl začínat příkazem SELECT * namísto seznamu názvů sloupců nebo výrazů.
S příkazem SELECT
Podívejme se, jak používat příkaz SELECT s operátorem EXISTUJE. Máme následující tabulky:
Rezervovat:
Cena:
Spusťte následující příkaz:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Tím se vrátí následující:
Výše uvedený příkaz by měl vrátit všechny záznamy v tabulce Book, jejichž id odpovídá id všech záznamů podle poddotazu. Bylo přiřazeno pouze jedno ID. Proto byl vrácen pouze jeden záznam.
S výpisem INSERT
Můžeme použít operátor EXISTUJE v příkazu INSERT. Máme následující 3 tabulky:
Rezervovat:
Cena:
Cena 2:
Poté můžeme spustit následující příkaz:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Tabulka cen je nyní následující:
Řádek s ID 5 v tabulce s názvem Price2 byl uzavřen. Tento záznam byl poté vložen do tabulky cen.
S výpisem UPDATE
V příkazu UPDATE můžeme použít operátor EXISTS.
Spusťte následující dotaz:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Aktualizujeme sloupec ceny v tabulce cen. Naším cílem je, aby ceny položek sdílejících ID byly stejné. Odpovídal pouze jeden řádek, tedy 5.
Vzhledem k tomu, že ceny jsou stejné, tj. 205, nebyla provedena žádná aktualizace. Pokud by byl rozdíl, byla by provedena aktualizace.
S příkazem DELETE
Příkaz PostgreSQL DELETE může používat operátor EXISTUJE. Zde je příklad:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Tabulka cen je nyní následující:
Řádek s ID 5 byl smazán.
S pgAdmin
Nyní se podívejme, jak lze tyto akce provádět pomocí pgAdmin.
S příkazem SELECT
Chcete-li toho dosáhnout prostřednictvím pgAdmin, postupujte takto:
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigačním panelu vlevo klikněte na Databáze.
- Klikněte na ukázku.
Krok 3) Zadejte dotaz do editoru dotazů:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Krok 4) Klikněte na tlačítko Provést.
Mělo by vrátit následující:
S výpisem INSERT
Chcete-li toho dosáhnout prostřednictvím pgAdmin, postupujte takto:
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigačním panelu vlevo klikněte na Databáze.
- Klikněte na ukázku.
Krok 3) Zadejte dotaz do editoru dotazů:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Krok 4) Klikněte na tlačítko Provést.
Tabulka cen by nyní měla být následující:
S výpisem UPDATE
Chcete-li toho dosáhnout prostřednictvím pgAdmin, postupujte takto:
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigačním panelu vlevo klikněte na Databáze.
- Klikněte na ukázku.
Krok 3) Zadejte dotaz do editoru dotazů:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Krok 4) Klikněte na tlačítko Provést.
Tabulka cen by nyní měla být následující:
S příkazem DELETE
Chcete-li toho dosáhnout prostřednictvím pgAdmin, postupujte takto:
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigačním panelu vlevo klikněte na Databáze.
- Klikněte na ukázku.
Krok 3) Zadejte dotaz do editoru dotazů:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Krok 4) Klikněte na tlačítko Provést.
Tabulka cen by nyní měla být následující:
souhrn
- Operátor EXISTUJE, zda v poddotazu existují řádky.
- Používá se s poddotazem a říká se, že byly splněny, když poddotaz vrací alespoň jeden řádek.
- Používá se společně s příkazy SELECT, UPDATE, INSERT a DELETE.
Stáhněte si databázi použitou v tomto výukovém programu