PostgreSQL ȘTERGERE Rânduri din Selectare

⚡ Rezumat inteligent

PostgreSQL Operația DELETE elimină unul sau mai multe rânduri dintr-un tabel, iar asocierea acesteia cu o clauză WHERE vizează doar înregistrările care îndeplinesc o condiție, în timp ce omiterea operației WHERE șterge fiecare rând din tabel.

  • 📋 Sintaxă: Condiția DELETE FROM tabelul WHERE elimină rândurile corespondente, iar RETURNING poate afișa datele șterse.
  • 🎯 O singură condiție: O singură clauză WHERE șterge doar rândurile care satisfac un singur test.
  • Două condiții: Unirea a două teste cu operatorul AND restrânge ștergerea la rânduri precise.
  • 🔗 Clauza EXISTS: EXISTS șterge rândurile dintr-un tabel pe baza înregistrărilor corespondente din alt tabel.
  • 🖥️ pgAdmin: Aceleași interogări de ștergere rulează vizual prin editorul de interogări pgAdmin.
  • 🤖 Siguranța IA: Asistenții AI adaugă clauza WHERE corectă și avertizează înainte de ștergerea întregului tabel.

PostgreSQL Ștergeți rândurile din selecție

Ștergeți interogarea în PostgreSQL

Declarația DELETE in PostgreSQL este utilizat pentru a șterge una sau mai multe înregistrări dintr-un tabel. Pentru a șterge doar rândurile selectate dintr-un tabel, PostgreSQL vă permite să combinați instrucțiunea DELETE cu clauza WHERE; în caz contrar, șterge toate înregistrările din tabel.

PostgreSQL Ștergere sintaxă interogare

Instrucțiunea DELETE poate fi definită folosind sintaxa următoare:

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

parametrii

Sunt disponibili următorii parametri:

  • cu-interogareClauza WITH vă permite să faceți referire la una sau mai multe subinterogări după nume în cadrul interogării DELETE.
  • nume-tabel: numele tabelului din care urmează să fie șterse înregistrările.
  • alias: un substitut pentru numele tabelului țintă.
  • folosind-listă: expresii de tabel care permit utilizarea coloanelor din alte tabele în clauza WHERE.
  • condiție(i): opțional. Acestea sunt condițiile care trebuie îndeplinite pentru ca înregistrările să fie șterse. Dacă această secțiune nu este furnizată, toate înregistrările cu nume de tabel vor fi șterse.
  • cursor-nume: cursorul care va fi utilizat în condiția WHERE CURRENT OF. Ultimul rând preluat de acest cursor va fi șters.
  • ieșire-expresie: expresia care va fi procesată și returnată de instrucțiunea DELETE după ștergerea fiecărui rând.
  • nume-ieșire: numele care va fi folosit pentru coloana returnată.

Rețineți că, deoarece instrucțiunea DELETE șterge întregul rând, nu este nevoie să specificați numele coloanelor.

PostgreSQL Ștergeți interogarea cu o condiție

Instrucțiunea DELETE poate fi utilizată cu o singură condiție, care este setată folosind clauza WHERE. Luați în considerare tabelul Price cu următoarele date:

Preț:

PostgreSQL Ștergeți interogarea cu o condiție

Să ștergem înregistrarea cu un id de 4:

DELETE FROM Price
WHERE id = 4;

Comanda de mai sus șterge înregistrările în care id-ul este 4. Să confirmăm dacă ștergerea a reușit:

PostgreSQL Ștergeți interogarea cu o condiție

Rândul cu ID-ul 4 a fost șters.

Ștergeți interogarea cu două condiții

PostgreSQL Instrucțiunea DELETE poate accepta și două condiții. Cele două condiții trebuie unite folosind operatorul AND. Vom folosi următorul tabel:

Preț:

PostgreSQL Ștergeți interogarea cu două condiții

Luați în considerare exemplul de mai jos:

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

În comanda de mai sus, ștergem rândul în care id-ul este 3 și prețul este 300. Acum putem interoga tabelul:

SELECT * FROM Price;

Aceasta returnează următoarele:

PostgreSQL Ștergeți interogarea cu două condiții

Înregistrarea cu un id de 3 și un preț de 300 a fost șters.

PostgreSQL Ștergerea interogării folosind condiția EXISTS

Cu EXISTĂ condiție, puteți face ca ȘTERGEREA să fie mai complexă. Uneori, poate fi nevoie să ștergeți înregistrări dintr-un tabel pe baza înregistrărilor dintr-un alt tabel.

Deoarece clauza FROM nu permite listarea înregistrărilor din mai multe tabele atunci când se efectuează o ștergere, clauza EXISTS devine foarte utilă. Avem următoarele două tabele:

Carte:

PostgreSQL Ștergerea interogării folosind condiția EXISTS

Preț:

PostgreSQL Ștergerea interogării folosind condiția EXISTS

Apoi putem rula următoarea interogare:

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

Comanda șterge rândurile din tabelul Book care au un ID corespunzător în tabelul Price cu un preț sub 250.

Tabelul Cărții este acum după cum urmează:

PostgreSQL Ștergerea interogării folosind condiția EXISTS

Înregistrarea cu id-ul 1 a fost ștearsă.

Cum se șterge un rând în PostgreSQL folosind pgAdmin

Aceleași interogări de ștergere pot fi executate vizual și prin interfața pgAdmin, urmând pașii de mai jos:

Cu o singură condiție

Pas 1) Conectați-vă la contul dvs. pgAdmin. Deschideți pgAdmin și conectați-vă la contul dvs. folosind datele de autentificare.

Pas 2) Creați o bază de date demonstrativă.

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

Ștergeți rândul în PostgreSQL folosind pgAdmin

Pas 3) Introduceți interogarea de mai jos în editorul de interogări:

DELETE FROM Price
WHERE id = 4;

Pas 4) Faceți clic pe butonul Execute.

Ștergeți rândul în PostgreSQL folosind pgAdmin

Pas 5) Să verificăm dacă rândul a fost șters:

Ștergeți rândul în PostgreSQL folosind pgAdmin

Cu două condiții

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

Ștergeți rândul în PostgreSQL folosind pgAdmin

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

Ștergeți rândul în PostgreSQL folosind pgAdmin

Pas 5) Să verificăm dacă ștergerea a avut succes:

Ștergeți rândul în PostgreSQL folosind pgAdmin

Utilizarea EXISTS Condition

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

Ștergerea unui rând folosind condiția EXISTS în pgAdmin

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

Ștergerea unui rând folosind condiția EXISTS în pgAdmin

Pas 5) Să verificăm dacă ștergerea a avut succes:

Ștergerea unui rând folosind condiția EXISTS în pgAdmin

Descărcați baza de date folosită în acest tutorial

Întrebări frecvente

TRUNCATE elimină instantaneu fiecare rând și resetează memoria, dar ignoră WHERE și declanșatoarele per rând. DELETE elimină rândurile selectate folosind o clauză WHERE, declanșează declanșatoare de rând și poate fi anulată în cadrul unei tranzacții.

Adăugați o clauză USING: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. Aceasta unește al doilea tabel și șterge rândurile corespondente, dând același rezultat ca EXISTS cu o sintaxă mai clară în stilul de unire.

RETURNING afișează coloanele din rândurile tocmai șterse în aceeași instrucțiune. Scrieți DELETE FROM Price WHERE id = 4 RETURNING * și PostgreSQL returnează datele eliminate, astfel încât aplicațiile să poată înregistra sau confirma modificarea.

Da. Încadrați DELETE într-o tranzacție cu BEGIN, apoi executați ROLLBACK pentru a o anula sau COMMIT pentru a o păstra. Până când efectuați validarea, rândurile eliminate pot fi restaurate, ceea ce protejează împotriva ștergerilor accidentale.

Păstrați o copie per grup folosind coloana ctid ascunsă: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. Aceasta elimină rândurile duplicate, păstrând în același timp o singură înregistrare.

Rulați mai întâi același filtru ca și pentru SELECT sau deschideți o tranzacție cu BEGIN și utilizați RETURNING pentru a inspecta rândurile afectate. RevVizualizarea rezultatului WHERE înainte de COMMIT previne ștergerea mai multor rânduri decât este intenționat.

Asistenții inteligenți artificiali traduc regulile din limba engleză simplă într-o instrucțiune DELETE cu clauza WHERE corectă, sugerează EXISTS sau USING pentru ștergeri între tabele și semnalează instrucțiunile cărora le lipsește o condiție ce ar șterge întregul tabel.

Da. Un copilot cu inteligență artificială verifică fiecare DELETE, avertizează când nu este prezentă nicio clauză WHERE și recomandă o tranzacție sau o previzualizare RETURNING, reducând riscul unei ștergeri accidentale a întregului tabel.

Rezumați această postare cu: