PostgreSQL Sorok törlése a Kijelölésből

⚡ Okos összefoglaló

PostgreSQL A DELETE egy vagy több sort távolít el egy táblázatból, és egy WHERE záradékkal párosítva csak azokat a rekordokat célozza meg, amelyek megfelelnek egy feltételnek, míg a WHERE elhagyása a táblázat összes sorát törli.

  • 📋 Syntax: A DELETE FROM tábla WHERE feltétele eltávolítja az egyező sorokat, a RETURNING pedig a törölt adatokat visszhangozhatja.
  • 🎯 Egy feltétel: Egyetlen WHERE záradék csak azokat a sorokat törli, amelyek megfelelnek egy feltételnek.
  • Két feltétel: Két teszt ÉS operátorral való összekapcsolása a törlést pontos sorokra szűkíti.
  • 🔗 LÉTEZIK záradék: Az EXISTS függvény egy táblázat sorait törli egy másik táblázatban található egyező rekordok alapján.
  • 🖥️ pgAdmin: Ugyanezek a törlési lekérdezések vizuálisan futnak a pgAdmin lekérdezésszerkesztőn keresztül.
  • 🤖 Mesterséges intelligencia biztonsága: A mesterséges intelligencia asszisztensek hozzáadják a megfelelő WHERE záradékot, és figyelmeztetnek a teljes táblák törlése előtt.

PostgreSQL Sorok törlése a Kijelölésből

Lekérdezés törlése itt PostgreSQL

Az TÖRLÉS utasítás in PostgreSQL egy vagy több rekord törlésére szolgál egy táblázatból. Ha csak a kiválasztott sorokat szeretné törölni egy táblázatból, PostgreSQL lehetővé teszi a DELETE utasítás kombinálását a WHERE záradékkal; ellenkező esetben törli a tábla összes rekordját.

PostgreSQL Lekérdezés szintaxisának törlése

A DELETE utasítás az alábbi szintaxissal definiálható:

[ WITH [ RECURSIVE ] with-query [, ...] ]
DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ]
    [ USING using-list ]
    [ WHERE condition(s) | WHERE CURRENT OF cursor-name]
    [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]

paraméterek

A következő paraméterek érhetők el:

  • lekérdezésselA WITH záradék lehetővé teszi, hogy név szerint hivatkozzunk egy vagy több allekérdezésre a DELETE lekérdezésen belül.
  • táblanév: annak a táblának a neve, amelyből a rekordokat törölni kell.
  • álnév: a céltábla nevének helyettesítője.
  • using-list: táblakifejezések, amelyek lehetővé teszik más táblák oszlopainak használatát a WHERE záradékban.
  • körülmények): opcionális. Ezeknek a feltételeknek kell teljesülniük a rekordok törléséhez. Ha ez a szakasz nincs kitöltve, az összes táblanév-rekord törlődik.
  • kurzornév: a WHERE CURRENT OF feltételben használandó kurzor. A kurzor által utoljára beolvasott sor törlődik.
  • kimenet-kifejezés: a DELETE utasítás által minden sor törlése után feldolgozandó és visszaadandó kifejezés.
  • kimeneti név: a visszaadott oszlophoz használandó név.

Vegye figyelembe, hogy mivel a DELETE utasítás a teljes sort törli, nem kell megadnia az oszlopneveket.

PostgreSQL Lekérdezés törlése egy feltétellel

A DELETE utasítás egyetlen feltétellel használható, amelyet a WHERE záradékkal állíthatunk be. Tekintsük a Price táblát a következő adatokkal:

Ár:

PostgreSQL Lekérdezés törlése egy feltétellel

Töröljük a 4-es azonosítójú rekordot:

DELETE FROM Price
WHERE id = 4;

A fenti parancs törli azokat a rekordokat, amelyekben az azonosító 4. Ellenőrizzük, hogy a törlés sikeres volt-e:

PostgreSQL Lekérdezés törlése egy feltétellel

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

Törölje a két feltétellel rendelkező lekérdezést

Az PostgreSQL A DELETE utasítás is két feltételt vehet fel. A két feltételt az ÉS operátorral kell összekapcsolni. Ehhez a következő táblázatot fogjuk használni:

Ár:

PostgreSQL Törölje a két feltétellel rendelkező lekérdezést

Tekintsük az alábbi példát:

DELETE FROM Price
WHERE id = 3
AND price = 300;

A fenti parancsban töröljük azt a sort, amelyben az azonosító 3, az ár pedig 300. Most lekérdezhetjük a táblázatot:

SELECT * FROM Price;

Ez a következőket adja vissza:

PostgreSQL Törölje a két feltétellel rendelkező lekérdezést

A 3-as azonosítójú és 300-as árú rekordot törölték.

PostgreSQL Lekérdezés törlése EXISTS feltétel használatával

Aktivitáskövető LÉTEZIK feltétellel bonyolultabbá teheti a TÖRLÉS műveletet. Előfordulhat, hogy egy táblázatban lévő rekordok törlésére van szükség egy másik táblázatban lévő rekordok alapján.

Mivel a FROM záradék nem teszi lehetővé, hogy egynél több táblából listázzunk rekordokat törléskor, az EXISTS záradék nagyon hasznossá válik. A következő két táblával rendelkezünk:

Könyv:

PostgreSQL Lekérdezés törlése EXISTS feltétel használatával

Ár:

PostgreSQL Lekérdezés törlése EXISTS feltétel használatával

Ezután a következő lekérdezést futtathatjuk:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

A parancs törli a Book tábla azon sorait, amelyeknek a Price táblában egyező azonosítójuk van, és az ár 250 alatt van.

A könyvtáblázat most a következő:

PostgreSQL Lekérdezés törlése EXISTS feltétel használatával

Az 1-es azonosítójú rekord törölve lett.

Hogyan töröljünk egy sort a PostgreSQL pgAdmin használatával

Ugyanezek a törlési lekérdezések vizuálisan is futtathatók a pgAdmin felületen keresztül, az alábbi lépéseket követve:

Egy feltétellel

Step 1) Jelentkezzen be pgAdmin fiókjába. Nyissa meg a pgAdmin alkalmazást, é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.

Sor törlése PostgreSQL pgAdmin használatával

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

DELETE FROM Price
WHERE id = 4;

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

Sor törlése PostgreSQL pgAdmin használatával

Step 5) Ellenőrizzük, hogy a sor törölve lett-e:

Sor törlése PostgreSQL pgAdmin használatával

Két feltétellel

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.

Sor törlése PostgreSQL pgAdmin használatával

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

DELETE FROM Price
WHERE id = 3
AND price = 300;

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

Sor törlése PostgreSQL pgAdmin használatával

Step 5) Ellenőrizzük, hogy a törlés sikeres volt-e:

Sor törlése PostgreSQL pgAdmin használatával

EXISTS feltétel használata

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.

Sor törlése az EXISTS feltétel használatával a pgAdmin-ban

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

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

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

Sor törlése az EXISTS feltétel használatával a pgAdmin-ban

Step 5) Ellenőrizzük, hogy a törlés sikeres volt-e:

Sor törlése az EXISTS feltétel használatával a pgAdmin-ban

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

GYIK

A TRUNCATE azonnal eltávolít minden sort és visszaállítja a tárhelyet, de figyelmen kívül hagyja a WHERE és a soronkénti triggereket. A DELETE a WHERE záradék segítségével eltávolítja a kijelölt sorokat, sortriggereket indít el, és egy tranzakción belül visszaállítható.

Adjunk hozzá egy USING záradékot: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. Ez csatlakozik a második táblához és törli az egyező sorokat, ugyanazt az eredményt adva, mint az EXISTS, csak egyértelműbb illesztési stílusú szintaxissal.

A RETURNING függvény visszaadja az ugyanabban az utasításban törölt sorok oszlopait. Írja be a következőt: DELETE FROM Price WHERE id = 4 RETURNING *, és PostgreSQL visszaadja az eltávolított adatokat, hogy az alkalmazások naplózhassák vagy megerősíthessék a módosítást.

Igen. Csomagold be a DELETE utasítást egy tranzakcióba a BEGIN paranccsal, majd futtasd a ROLLBACK parancsot a visszavonásához, vagy a COMMIT parancsot a megtartásához. Amíg nem commitolod, az eltávolított sorok visszaállíthatók, ami védelmet nyújt a véletlen törlések ellen.

Csoportonként egy másolatot tartson meg a rejtett ctid oszlop használatával: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. Ez eltávolítja az ismétlődő sorokat, miközben egyetlen rekordot tart meg.

Először futtasd le ugyanazt a szűrőt SELECT-ként, vagy nyisson meg egy tranzakciót a BEGIN függvénnyel, és a RETURNING függvénnyel vizsgálja meg az érintett sorokat. RevA WHERE eredmény COMMIT előtti megtekintése megakadályozza a kívántnál több sor törlését.

A mesterséges intelligencia asszisztensei a közérthető angol szabályokat DELETE utasítássá alakítják a megfelelő WHERE záradékkal, EXISTS vagy USING utasítást javasolnak a táblázatok közötti törlésekhez, és megjelölik azokat az utasításokat, amelyekből hiányzik egy feltétel, amely az egész táblát törölné.

Igen. Egy AI Copilot felülvizsgál minden DELETE műveletet, figyelmeztet, ha nincs WHERE záradék, és tranzakciót vagy RETURNING előnézetet javasol, csökkentve a véletlen teljes tábla törlésének kockázatát.

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