PostgreSQL IZBRIĆ I retke iz odabranog

⚡ Pametni saĆŸetak

PostgreSQL Naredba DELETE uklanja jedan ili viĆĄe redaka iz tablice, a uparivanje s klauzulom WHERE cilja samo na zapise koji odgovaraju uvjetu, dok izostavljanje naredbe WHERE briĆĄe svaki redak u tablici.

  • 📋 Sintaksa: Uvjet DELETE FROM table WHERE uklanja odgovarajuće retke, a RETURNING moĆŸe prikazati izbrisane podatke.
  • 🎯 Jedan uvjet: Jedna WHERE klauzula briĆĄe samo retke koji zadovoljavaju jedan kriterij.
  • ➕ Dva uvjeta: Spajanje dvaju testova operatorom AND suĆŸava brisanje na precizne retke.
  • 🔗 Klauzula POSTOJI: Funkcija EXISTS briĆĄe retke u jednoj tablici na temelju odgovarajućih zapisa u drugoj tablici.
  • đŸ–„ïž pgAdmin: Isti upiti za brisanje vizualno se izvode putem pgAdmin editora upita.
  • đŸ€– Sigurnost umjetne inteligencije: AI asistenti dodaju ispravnu WHERE klauzulu i upozoravaju prije brisanja cijele tablice.

PostgreSQL IzbriĆĄi retke iz odabranog

IzbriĆĄi upit u PostgreSQL

The Izjava DELETE in PostgreSQL koristi se za brisanje jednog ili viơe zapisa iz tablice. Za brisanje samo odabranih redaka iz tablice, PostgreSQL omogućuje kombiniranje naredbe DELETE s klauzulom WHERE; u suprotnom briơe sve zapise u tablici.

PostgreSQL Sintaksa upita za brisanje

Naredba DELETE moĆŸe se definirati pomoću sljedeće sintakse:

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

Parametri

Dostupni su sljedeći parametri:

  • s upitom: klauzula WITH vam omogućuje pozivanje na jedan ili viĆĄe podupita po imenu unutar upita DELETE.
  • naziv tablice: naziv tablice iz koje se briĆĄu zapisi.
  • pseudonim: zamjena za naziv ciljne tablice.
  • popis-using: izrazi tablice koji omogućuju koriĆĄtenje stupaca iz drugih tablica u klauzuli WHERE.
  • stanje(a): neobavezno. Ovo su uvjeti koji moraju biti ispunjeni da bi se zapisi izbrisali. Ako ovaj odjeljak nije naveden, svi zapisi s nazivima tablica bit će izbrisani.
  • naziv-kurzora: kursor koji će se koristiti u uvjetu WHERE CURRENT OF. Posljednji redak koji je ovaj kursor dohvatio bit će izbrisan.
  • izlazni izrazizraz koji će se obraditi i vratiti naredbom DELETE nakon brisanja svakog retka.
  • izlazni naziv: naziv koji će se koristiti za vraćeni stupac.

Imajte na umu da budući da naredba DELETE briơe cijeli redak, ne morate navoditi nazive stupaca.

PostgreSQL Brisanje upita s jednim uvjetom

Naredba DELETE moĆŸe se koristiti s jednim uvjetom, koji se postavlja pomoću klauzule WHERE. Razmotrimo tablicu Price sa sljedećim podacima:

Cijena:

PostgreSQL Brisanje upita s jednim uvjetom

IzbriĆĄimo zapis s ID-om 4:

DELETE FROM Price
WHERE id = 4;

Gornja naredba briĆĄe zapise u kojima je ID 4. Potvrdimo je li brisanje bilo uspjeĆĄno:

PostgreSQL Brisanje upita s jednim uvjetom

Redak s ID-om 4 je izbrisan.

Brisanje upita s dva uvjeta

The PostgreSQL Naredba DELETE također moĆŸe imati dva uvjeta. Dva uvjeta treba spojiti pomoću operatora AND. Koristit ćemo sljedeću tablicu:

Cijena:

PostgreSQL Brisanje upita s dva uvjeta

Razmotrite primjer u nastavku:

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

U gornjoj naredbi briĆĄemo redak u kojem je ID 3, a cijena 300. Sada moĆŸemo upitati tablicu:

SELECT * FROM Price;

Ovo vraća sljedeće:

PostgreSQL Brisanje upita s dva uvjeta

Zapis s id-om 3 i cijenom 300 je izbrisan.

PostgreSQL Brisanje upita pomoću uvjeta EXISTS

Uz POSTOJI uvjet, moĆŸete učiniti DELETE sloĆŸenijim. Ponekad moĆŸe postojati potreba za brisanjem zapisa u jednoj tablici na temelju zapisa u drugoj tablici.

Budući da klauzula FROM ne dopuơta popisivanje zapisa iz viơe od jedne tablice prilikom brisanja, klauzula EXISTS postaje vrlo korisna. Imamo sljedeće dvije tablice:

Rezervirati:

PostgreSQL Brisanje upita pomoću uvjeta EXISTS

Cijena:

PostgreSQL Brisanje upita pomoću uvjeta EXISTS

Zatim moĆŸemo pokrenuti sljedeći upit:

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

Naredba briơe retke iz tablice Knjiga koji imaju odgovarajući ID u tablici Cijena s cijenom ispod 250.

Tablica knjiga je sada sljedeća:

PostgreSQL Brisanje upita pomoću uvjeta EXISTS

Zapis s ID-om 1 je izbrisan.

Kako izbrisati redak u PostgreSQL koristeći pgAdmin

Isti upiti za brisanje mogu se vizualno pokrenuti i putem pgAdmin sučelja, slijedeći sljedeće korake:

Uz jedan uvjet

Korak 1) Prijavite se na svoj pgAdmin račun. Otvorite pgAdmin i prijavite se na svoj račun koristeći svoje vjerodajnice.

Korak 2) Izradite demo bazu podataka.

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

Izbriơi redak u PostgreSQL koristeći pgAdmin

Korak 3) Unesite upit u nastavku u uređivač upita:

DELETE FROM Price
WHERE id = 4;

Korak 4) Pritisnite gumb IzvrĆĄi.

Izbriơi redak u PostgreSQL koristeći pgAdmin

Korak 5) Provjerimo je li redak izbrisan:

Izbriơi redak u PostgreSQL koristeći pgAdmin

Uz dva uvjeta

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

Izbriơi redak u PostgreSQL koristeći pgAdmin

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb IzvrĆĄi.

Izbriơi redak u PostgreSQL koristeći pgAdmin

Korak 5) Provjerimo je li brisanje uspjeĆĄno:

Izbriơi redak u PostgreSQL koristeći pgAdmin

KoriĆĄtenje uvjeta POSTOJI

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

Brisanje retka pomoću uvjeta EXISTS u pgAdmin-u

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb IzvrĆĄi.

Brisanje retka pomoću uvjeta EXISTS u pgAdmin-u

Korak 5) Provjerimo je li brisanje uspjeĆĄno:

Brisanje retka pomoću uvjeta EXISTS u pgAdmin-u

Preuzmite bazu podataka koriơtenu u ovom vodiču

Pitanja i odgovori

TRUNCATE odmah uklanja svaki redak i resetira pohranu, ali ignorira WHERE i okidače po retku. DELETE uklanja odabrane retke pomoću klauzule WHERE, aktivira okidače redaka i moĆŸe se vratiti unutar transakcije.

Dodajte USING klauzulu: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. Spaja drugu tablicu i briơe odgovarajuće retke, dajući isti rezultat kao EXISTS s jasnijom sintaksom u stilu spajanja.

RETURNING vraća stupce iz redaka koji su upravo izbrisani u istoj naredbi. NapiĆĄite DELETE FROM Price WHERE id = 4 RETURNING * i PostgreSQL vraća uklonjene podatke kako bi aplikacije mogle zabiljeĆŸiti ili potvrditi promjenu.

Da. Zamotajte DELETE u transakciju s BEGIN, zatim pokrenite ROLLBACK da biste ga poniĆĄtili ili COMMIT da biste ga zadrĆŸali. Dok ne potvrdite, uklonjeni retci mogu se vratiti, ĆĄto ĆĄtiti od pogreĆĄnog brisanja.

ZadrĆŸite jednu kopiju po grupi koristeći skriveni stupac ctid: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. Ovo uklanja duplicirane retke, a zadrĆŸava jedan zapis.

Prvo pokrenite isti filter kao SELECT ili otvorite transakciju s BEGIN i upotrijebite RETURNING za pregled pogođenih redaka. RevPregledavanje rezultata WHERE prije naredbe COMMIT sprječava brisanje viơe redaka nego ơto je predviđeno.

AI asistenti prevode pravila na običnom engleskom jeziku u DELETE s ispravnom WHERE klauzulom, predlaĆŸu EXISTS ili USING za brisanje između tablica i označavaju naredbe kojima nedostaje uvjet koji bi izbrisao cijelu tablicu.

Da. AI Copilot pregledava svako brisanje, upozorava kada nema klauzule WHERE i preporučuje transakciju ili pregled RETURNING, smanjujući rizik od slučajnog brisanja cijele tablice.

SaĆŸmite ovu objavu uz: