co je PostgreSQL existuje?
operátor EXISTS testuje, zda v poddotazu existuje řádek(y). To znamená, že operátor se používá společně s poddotazem. Operátor Exists se říká, že byl splněn, když se v poddotazu nachází alespoň jeden řádek. Tuto operaci můžete použít spolu s příkazy vybrat, Aktualizovat, vložit a odstranit.
v tomto tutoriálu PostgreSQL se dozvíte následující:
- Syntax
- SELECT
- INSERT
- AKTUALIZACE Prohlášení
- DELETE
- S pgAdmin
Syntax
Tady je syntaxe pro PostgreSQL EXISTUJE prohlášení:
WHERE EXISTS (subquery);
Výše uvedené syntaxe ukazuje, že EXISTUJE operátor bere v argumentu, které je poddotaz. Poddotaz je jednoduše příkaz SELECT, který by měl začínat SELECT * namísto seznamu názvů sloupců nebo výrazů.
s příkazem SELECT
uvidíme, jak použít příkaz SELECT s operátorem EXISTS. Máme následující tabulky:
Kniha:
Cena:
Spustit následující příkaz:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Tento příkaz vrátí následující:
Výše uvedený příkaz by měl vrátit všechny záznamy v Knize stolu, jehož id odpovídá id nějaké záznamy poddotazem. Shodoval se pouze jeden průkaz. Proto byl vrácen pouze jeden záznam.
s příkazem INSERT
můžeme použít operátor EXISTS v příkazu INSERT. Máme následující 3 tabulky:
Kniha:
Cena:
Price2:
pak můžeme spustit následující příkaz:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Cena stolu je nyní následující:
řádek s id 5 v tabulce pojmenované Price2 bylo uzavřeno. Tento záznam byl poté vložen do cenové tabulky.
s příkazem aktualizace
můžeme použít existujícího operátora v příkazu aktualizace.
Spusťte následující dotaz:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
aktualizujeme sloupec cen v tabulce cen. Naším cílem je, aby ceny položek sdílejících id byly stejné. Shodoval se pouze jeden řádek, tedy 5.
vzhledem k tomu, že ceny jsou stejné, tj. Pokud by byl rozdíl, byla by provedena aktualizace.
s příkazem DELETE
příkaz PostgreSQL DELETE může použít existujícího operátora. Zde je příklad:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Cena stolu je nyní následující:
řádek s id 5 byl vypuště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 pomocí pgAdmin, proveďte toto:
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- z navigačního panelu v databázích klikněte levým tlačítkem myši.
- Klikněte Na Demo.
Krok 3) zadejte dotaz do editoru dotazů:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Krok 4) Klikněte na tlačítko Spustit.
To by měl vrátit následující:
S INSERT
K dosažení stejného přes pgAdmin, udělat toto:
Krok 1) Přihlaste se na svůj pgAdmin účet.
Krok 2)
- z navigačního panelu v databázích klikněte levým tlačítkem myši.
- Klikněte Na Demo.
Krok 3) zadejte dotaz do editoru dotazů:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Krok 4) Klikněte na tlačítko Spustit.
Cena stolu by nyní měly být takto:
S AKTUALIZACÍ Prohlášení
K dosažení stejného přes pgAdmin, udělat toto:
Krok 1) Přihlaste se na svůj pgAdmin účet.
Krok 2)
- z navigačního panelu v databázích klikněte levým tlačítkem myši.
- Klikněte Na Demo.
Krok 3) zadejte dotaz do editoru dotazů:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Krok 4) Klikněte na tlačítko Spustit.
Cena stolu by nyní měly být takto:
S DELETE
K dosažení stejného přes pgAdmin, udělat toto:
Krok 1) Přihlaste se na svůj pgAdmin účet.
Krok 2)
- z navigačního panelu v databázích klikněte levým tlačítkem myši.
- Klikněte Na Demo.
Krok 3) zadejte dotaz do editoru dotazů:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Krok 4) Klikněte na tlačítko Spustit.
cenová tabulka by nyní měla být následující:
souhrn
- operátor EXISTS testuje, zda v poddotazu existuje řádek(y).
- používá se s poddotazem a říká se, že byl splněn, 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 tutoriálu