PostgreSQL Kustuta read valikust

⚡ Nutikas kokkuvõte

PostgreSQL DELETE eemaldab tabelist ühe või mitu rida ning selle sidumine WHERE-klausliga sihtib ainult tingimusele vastavaid kirjeid, WHERE-klausli väljajätmine aga tühjendab tabeli kõik read.

  • ???? süntaksit: Tingimus DELETE FROM table WHERE eemaldab vastavad read ja tingimus RETURNING saab kustutatud andmeid kajastada.
  • 🎯 Üks tingimus: Üks WHERE-klausel kustutab ainult need read, mis vastavad ühele testile.
  • Kaks tingimust: Kahe testi ühendamine operaatoriga AND kitsendab kustutamise täpsete ridadeni.
  • 🔗 EXISTS klausel: Funktsioon EXISTS kustutab ühes tabelis read teise tabeli vastavate kirjete põhjal.
  • 🖥️ pgAdmin: Samad kustutuspäringud töötavad visuaalselt ka pgAdmin päringuredaktoris.
  • 🤖 Tehisintellekti ohutus: Tehisintellekti assistendid lisavad õige WHERE-klausli ja hoiatavad enne terve tabeli kustutamist.

PostgreSQL Kustuta read valikust

Kustuta päring PostgreSQL

. Kustutuslause in PostgreSQL kasutatakse ühe või mitme kirje kustutamiseks tabelist. Ainult valitud ridade kustutamiseks tabelist PostgreSQL võimaldab DELETE-lause kombineerida WHERE-klausliga; vastasel juhul kustutab see kõik tabeli kirjed.

PostgreSQL Kustuta päringu süntaks

DELETE-lause saab defineerida järgmise süntaksi abil:

[ 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] [, ...] ]

parameetrid

Saadaval on järgmised parameetrid:

  • päringugaWITH-klausel võimaldab teil DELETE-päringus viidata ühele või mitmele alampäringule nime järgi.
  • tabeli nimi: tabeli nimi, millest kirjed kustutatakse.
  • alias: sihttabeli nime asendaja.
  • kasutades-list: tabeliavaldised, mis lubavad WHERE-klauslis kasutada teiste tabelite veerge.
  • seisund(id): valikuline. Need on tingimused, mis peavad olema täidetud kirjete kustutamiseks. Kui seda jaotist ei täideta, kustutatakse kõik tabelinimega kirjed.
  • kursori nimi: kursor, mida kasutatakse tingimuses WHERE CURRENT OF. Selle kursori poolt viimati laetud rida kustutatakse.
  • väljund-väljendus: avaldis, mida DELETE-lause töötleb ja tagastab pärast iga rea ​​kustutamist.
  • väljundi nimi: tagastatud veeru jaoks kasutatav nimi.

Pane tähele, et kuna DELETE-käsk kustutab terve rea, ei pea sa veerunimesid määrama.

PostgreSQL Kustuta päring ühe tingimusega

DELETE-lauset saab kasutada ühe tingimusega, mis määratakse WHERE-klausli abil. Vaatleme järgmiste andmetega tabelit Price:

Hind:

PostgreSQL Kustuta päring ühe tingimusega

Kustutame kirje ID-ga 4:

DELETE FROM Price
WHERE id = 4;

Ülaltoodud käsk kustutab kirjed, mille ID on 4. Kontrollime, kas kustutamine õnnestus:

PostgreSQL Kustuta päring ühe tingimusega

Rida, mille ID on 4, on kustutatud.

Kustutage päring kahe tingimusega

. PostgreSQL DELETE-lause saab samuti võtta kaks tingimust. Need kaks tingimust tuleks ühendada AND-operaatoriga. Kasutame järgmist tabelit:

Hind:

PostgreSQL Kustutage päring kahe tingimusega

Mõelge allpool toodud näitele:

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

Ülaltoodud käsus kustutame rea, kus ID on 3 ja hind on 300. Nüüd saame tabelit pärida:

SELECT * FROM Price;

See tagastab järgmise:

PostgreSQL Kustutage päring kahe tingimusega

Kirje id-ga 3 ja hinnaga 300 kustutati.

PostgreSQL Kustuta päring tingimuse EXISTS abil

Koos OLEMAS tingimuse korral saate kustutamise keerukamaks muuta. Mõnikord võib tekkida vajadus kustutada ühe tabeli kirjeid teise tabeli kirjete põhjal.

Kuna FROM-klausel ei luba kustutamisel loetleda kirjeid rohkem kui ühest tabelist, on EXISTS-klausel väga kasulik. Meil ​​on järgmised kaks tabelit:

Raamat:

PostgreSQL Kustuta päring tingimuse EXISTS abil

Hind:

PostgreSQL Kustuta päring tingimuse EXISTS abil

Seejärel saame käivitada järgmise päringu:

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

Käsk kustutab Book tabelist read, millel on hinnatabelis vastav ID, mille hind on alla 250.

Raamatute tabel on nüüd järgmine:

PostgreSQL Kustuta päring tingimuse EXISTS abil

Kirje ID-ga 1 kustutati.

Kuidas rida kustutada PostgreSQL kasutades pgAdminit

Samu kustutuspäringuid saab käivitada ka visuaalselt pgAdmin liidese kaudu, järgides alltoodud samme:

Ühe tingimusega

Step 1) Logige sisse oma pgAdmini kontole. Avage pgAdmin ja logige oma kontole sisse oma sisselogimisandmetega.

Step 2) Loo demo andmebaas.

  1. Klõpsake vasakpoolsel navigeerimisribal valikul Andmebaasid.
  2. Klõpsake Demo.

Kustuta rida sisse PostgreSQL kasutades pgAdminit

Step 3) Tippige päringuredaktorisse allolev päring:

DELETE FROM Price
WHERE id = 4;

Step 4) Klõpsake nuppu Käivita.

Kustuta rida sisse PostgreSQL kasutades pgAdminit

Step 5) Kontrollime, kas rida on kustutatud:

Kustuta rida sisse PostgreSQL kasutades pgAdminit

Kahe tingimusega

Step 1) Logige sisse oma pgAdmini kontole.

Step 2)

  1. Klõpsake vasakpoolsel navigeerimisribal valikul Andmebaasid.
  2. Klõpsake Demo.

Kustuta rida sisse PostgreSQL kasutades pgAdminit

Step 3) Sisestage päring päringuredaktorisse:

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

Step 4) Klõpsake nuppu Käivita.

Kustuta rida sisse PostgreSQL kasutades pgAdminit

Step 5) Kontrollime, kas kustutamine õnnestus:

Kustuta rida sisse PostgreSQL kasutades pgAdminit

Kasutades tingimust EXISTS

Step 1) Logige sisse oma pgAdmini kontole.

Step 2)

  1. Klõpsake vasakpoolsel navigeerimisribal valikul Andmebaasid.
  2. Klõpsake Demo.

Rea kustutamine pgAdminis tingimuse EXISTS abil

Step 3) Sisestage päring päringuredaktorisse:

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

Step 4) Klõpsake nuppu Käivita.

Rea kustutamine pgAdminis tingimuse EXISTS abil

Step 5) Kontrollime, kas kustutamine õnnestus:

Rea kustutamine pgAdminis tingimuse EXISTS abil

Laadige alla selles õpetuses kasutatud andmebaas

KKK

TRUNCATE eemaldab koheselt kõik read ja lähtestab salvestusruumi, kuid ignoreerib WHERE ja reapõhiseid päästikuid. DELETE eemaldab valitud read WHERE-klausli abil, käivitab reapäästikud ja seda saab tehingu sees tagasi võtta.

Lisa USING-klausel: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. See liidab teise tabeliga ja kustutab vastavad read, andes sama tulemuse kui EXISTS, ainult selgema liitmisstiilis süntaksiga.

RETURNING kordab samas lauses äsja kustutatud ridade veerge. Kirjuta DELETE FROM Price WHERE id = 4 RETURNING * ja PostgreSQL tagastab eemaldatud andmed, et rakendused saaksid muudatuse logida või kinnitada.

Jah. Mähi DELETE tehingusse käsuga BEGIN ja seejärel käivita käsk ROLLBACK selle tagasivõtmiseks või käsk COMMIT selle säilitamiseks. Kuni käsku kinnitamiseni saab eemaldatud ridu taastada, mis kaitseb ekslike kustutamiste eest.

Säilita iga grupi kohta üks koopia, kasutades peidetud ctid veergu: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. See eemaldab duplikaatread, säilitades samal ajal ühe kirje.

Käivita esmalt sama filter SELECT-ina või ava tehing funktsiooniga BEGIN ja kontrolli mõjutatud ridu funktsiooniga RETURNING. RevWHERE tulemuse vaatamine enne COMMIT käsku hoiab ära rohkemate ridade kustutamise kui ette nähtud.

Tehisintellekti assistendid tõlgivad lihtsad inglise keele reeglid DELETE-ks koos õige WHERE-klausliga, soovitavad tabeliteüleste kustutamiste korral EXISTS-i või USING-i ning märgistavad laused, millel puudub tingimus, mis tühjendaks kogu tabeli.

Jah. Tehisintellekti kopilot vaatab iga DELETE üle, hoiatab WHERE-klausli puudumisel ja soovitab tehingut või RETURNING-eelvaadet, vähendades kogu tabeli juhusliku kustutamise ohtu.

Võta see postitus kokku järgmiselt: