PostgreSQL LÉTEZIK SELECT-tel Operator (Példa)

⚡ Okos összefoglaló

PostgreSQL Az EXISTS egy logikai operátor, amely azt vizsgálja, hogy egy korreláló allekérdezés visszaad-e valamilyen sort, lehetővé téve a SELECT, INSERT, UPDATE és DELETE utasítások számára az adatok hatékony szűrését az egyező rekordok megléte vagy hiánya alapján.

  • 📋 Syntax: A WHERE EXISTS (alkérdés) igaz értéket ad vissza, ha az alkérdés legalább egy sort eredményez.
  • 🔗 Korrelált allekérdezés: Az EXISTS függvény összekapcsolja a belső és külső lekérdezéseket, egy megosztott kulcson lévő sorokat párosítva.
  • Rövidzárlat: Az EXISTS az első egyező sornál megáll, így jól skálázható nagy táblázatokon.
  • 🔁 Négy állítás: Az operátor SELECT, INSERT, UPDATE és DELETE lekérdezésekben működik.
  • 🛡️ NEM LÉTEZIK: Biztonságosan kizárja a sorokat és elkerüli a NOT IN hibát okozó NULL csapdát.
  • 🤖 AI lekérdezések: Az asszisztensek EXISTS záradékokat generálnak, és jelzik a korrelált alkérések teljesítménykockázatait.

PostgreSQL LÉTEZIK a Select segítségével Operator

Mi LÉTEZIK benne? PostgreSQL?

Az PostgreSQL LÉTEZIK Az operátor azt vizsgálja, hogy egy sor(ok) létezik-e egy(ek) egy allekérdezésben. Ez azt jelenti, hogy az operátort egy allekérdezéssel együtt használjuk. Az EXISTS operátor akkor teljesül, ha legalább egy sor található az allekérdezésben. Ez a művelet a SELECT, UPDATE, INSERT és DELETE utasításokkal együtt használható.

PostgreSQL LÉTEZIK lekérdezési szintaxis

Itt van a szintaxis a PostgreSQL EXISTS nyilatkozat:

WHERE EXISTS (subquery);

A fenti szintaxis azt mutatja, hogy az EXISTS operátor egy argumentumot vesz fel, amely egy segédlekérdezés. Az allekérdezés egyszerűen a SELECT utasítás amelynek a SELECT * karakterrel kell kezdődnie az oszlopnevek vagy kifejezések listája helyett.

PostgreSQL LÉTEZIK SELECT utasítással

Nézzük meg, hogyan használhatunk egy SELECT utasítást az EXISTS operátorral. A következő táblázatokkal rendelkezünk:

Könyv:

PostgreSQL LÉTEZIK SELECT utasítással

Ár:

PostgreSQL LÉTEZIK SELECT utasítással

Futtassa a következő utasítást:

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

Ez a következőket adja vissza:

PostgreSQL EXISTS SELECT utasítás eredményével

A fenti parancsnak vissza kell adnia a Book tábla összes olyan rekordját, amelynek azonosítója megegyezik az allekérdezésben szereplő rekordok azonosítójával. Csak egy azonosító egyezik. Ezért csak egy rekordot küldtek vissza.

PostgreSQL LÉTEZIK INSERT utasítással

Használhatjuk az EXISTS operátort egy INSERT nyilatkozat. A következő 3 táblázatunk van:

Könyv:

PostgreSQL LÉTEZIK INSERT utasítással

Ár:

PostgreSQL LÉTEZIK INSERT utasítással

Ár2:

PostgreSQL LÉTEZIK INSERT utasítással

Ezután a következő utasítást futtathatjuk:

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

Az ártáblázat most a következő:

PostgreSQL LÉTEZIK INSERT utasítás eredményével

Az Ár5 nevű táblázat 2-ös azonosítójú sora illeszkedett. Ezt a rekordot ezután beillesztették az Ártáblázatba.

PostgreSQL LÉTEZIK FRISSÍTÉSI utasítással

Az EXISTS operátort használhatjuk az UPDATE utasításban.

Futtassa a következő lekérdezést:

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

PostgreSQL LÉTEZIK FRISSÍTÉSI utasítással

Frissítjük az Ár táblázat ár oszlopát. Célunk, hogy az azonos azonosítóval rendelkező cikkek árai azonosak legyenek. Csak egy sor egyezik meg, azaz 5.

Mivel azonban az árak megegyeznek, azaz 205-ös, nem történt frissítés. Ha lenne különbség, akkor frissítés történt volna.

PostgreSQL LÉTEZIK DELETE utasítással

A PostgreSQL A DELETE utasítás használhatja az EXISTS operátort. Íme egy példa:

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

Az ártáblázat most a következő:

PostgreSQL LÉTEZIK DELETE utasítással

A 5-es azonosítójú sort törölték.

PostgreSQL EXISTS utasítás a pgAdmin használatával

Az SQL shell-en túl ugyanazok az EXISTS lekérdezések vizuálisan is végrehajthatók a pgAdmin felületén keresztül. Most nézzük meg, hogyan hajthatók végre ezek a műveletek a pgAdmin használatával:

SELECT utasítással

Az alábbiakban egy EXISTS lekérdezés használatának lépései láthatók a következőben: PostgreSQL egy SELECT utasítással a pgAdmin használatával:

Step 1) Jelentkezzen be pgAdmin fiókjába. Nyissa meg a pgAdmin-t, és jelentkezzen be fiókjába a hitelesítő adataival.

Step 2) Hozz létre egy demó adatbázist.

  1. A bal oldali navigációs sávon kattintson az Adatbázisok elemre.
  2. Kattintson a Demo gombra.

PostgreSQL EXISTS utasítás a pgAdmin használatával

Step 3) Írja be az alábbi lekérdezést a lekérdezésszerkesztőbe:

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

Step 4) Kattintson a Végrehajtás gombra.

PostgreSQL EXISTS utasítás a pgAdmin használatával

A következőt kell visszaadnia:

PostgreSQL EXISTS utasítás a pgAdmin használatával

INSERT nyilatkozattal

Ha ugyanezt a pgAdminon keresztül szeretné elérni, tegye a következőket:

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  1. A bal oldali navigációs sávon kattintson az Adatbázisok elemre.
  2. Kattintson a Demo gombra.

EXISTS utasítás itt: PostgreSQL pgAdmin használatával

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

Step 4) Kattintson a Végrehajtás gombra.

EXISTS utasítás itt: PostgreSQL pgAdmin használatával

Az ártáblázatnak most a következőnek kell lennie:

EXISTS utasítás itt: PostgreSQL pgAdmin használatával

UPDATE nyilatkozattal

Ha ugyanezt a pgAdminon keresztül szeretné elérni, tegye a következőket:

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  1. A bal oldali navigációs sávon kattintson az Adatbázisok elemre.
  2. Kattintson a Demo gombra.

EXISTS utasítás itt: PostgreSQL pgAdmin használatával

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

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

Step 4) Kattintson a Végrehajtás gombra.

PostgreSQL EXISTS utasítás a pgAdmin használatával

Az ártáblázatnak most a következőnek kell lennie:

PostgreSQL EXISTS utasítás a pgAdmin használatával

A DELETE nyilatkozattal

Ha ugyanezt a pgAdminon keresztül szeretné elérni, tegye a következőket:

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  1. A bal oldali navigációs sávon kattintson az Adatbázisok elemre.
  2. Kattintson a Demo gombra.

PostgreSQL EXISTS utasítás a pgAdmin használatával

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

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

Step 4) Kattintson a Végrehajtás gombra.

PostgreSQL EXISTS utasítás a pgAdmin használatával

Az ártáblázatnak most a következőnek kell lennie:

PostgreSQL EXISTS utasítás a pgAdmin használatával

Töltse le az oktatóanyagban használt adatbázist

GYIK

Az EXISTS függvény azt vizsgálja, hogy egy korrelált allekérdezés visszaad-e valamilyen sort, és az első találatnál megáll, így nagyméretű allekérdezésekhez is illik. Az IN függvény egy értéket összehasonlít egy listával, és kis, konstans halmazokra illeszt.

A NOT IN függvény nulla sort adhat vissza, ha az alkérés NULL értéket tartalmaz, mivel az összehasonlítás során az ismeretlenné válik. A NOT EXISTS figyelmen kívül hagyja a NULL értékeket, és minden sort helyesen értékel ki, így megbízható választás az anti-join műveletekhez.

Egy korrelált allekérdezés a külső lekérdezés egy oszlopára hivatkozik, például WHERE Book.id = Price.id. Az EXISTS minden külső sorra újraellenőrzi, és igaz értéket ad vissza, ha egyezést talál.

Igen. Az EXISTS függvény igaz értéket ad vissza, amint az allekérdezés létrehoz egy sort, így a többit nem vizsgálja meg. Ez a rövidzárlatos viselkedés hatékonysá teszi a nagyméretű, korrelált allekérdezések esetén.

Nem. Az EXISTS csak azt ellenőrzi, hogy az alkérés visszaad-e sort, tehát a SELECT *, SELECT 1 vagy SELECT id ugyanúgy viselkedik. Az alkérésen belüli oszloplista nem befolyásolja az eredményt.

Indexeld az alkérésen belül összekapcsolt oszlopokat, hagyd a korrelációs feltételt módosíthatónak, és futtasd az EXPLAIN ANALYZE függvényt. PostgreSQL gyakran átírja az EXISTS függvényt hatékony félig-összekapcsolásként, ha az indexek támogatják.

A mesterséges intelligencia asszisztensei az egyszerű angol szabályokat EXISTS záradékokká alakítják, felépítik a korrelált allekérdezést, és figyelmeztetnek a NOT IN NULL hibaüzenetekre. Indexeket és EXPLAIN tippeket is javasolnak a finomhangoláshoz.

Igen. Egy AI Copilot felismeri az alkérésmintákat, és az IN értéket EXISTS-ként, a NOT IN értékét pedig NOT EXISTS-ként írja át, javítva a NULL biztonságot és teljesítményt nagyméretű táblákon.

Foglald össze ezt a bejegyzést a következőképpen: