PostgreSQL Verwijder rijen uit de selectie

โšก Slimme samenvatting

PostgreSQL Met DELETE worden een of meer rijen uit een tabel verwijderd. In combinatie met een WHERE-clausule worden alleen de records geselecteerd die aan een bepaalde voorwaarde voldoen, terwijl het weglaten van de WHERE-clausule alle rijen in de tabel verwijdert.

  • ๐Ÿ“‹ Syntax: DELETE FROM table WHERE condition verwijdert overeenkomende rijen, en RETURNING kan de verwijderde gegevens weergeven.
  • ๐ŸŽฏ Eรฉn voorwaarde: Een enkele WHERE-clausule verwijdert alleen de rijen die aan รฉรฉn voorwaarde voldoen.
  • โž• Twee voorwaarden: Door twee tests met AND te combineren, wordt de verwijdering beperkt tot specifieke rijen.
  • ๐Ÿ”— Bestaat-clausule: Met EXISTS worden rijen in de ene tabel verwijderd op basis van overeenkomende records in een andere tabel.
  • โ€‹ pgAdmin: Dezelfde verwijderingsquery's worden visueel uitgevoerd via de pgAdmin-query-editor.
  • ๐Ÿค– AI-veiligheid: AI-assistenten voegen de juiste WHERE-clausule toe en waarschuwen voordat volledige tabellen worden verwijderd.

PostgreSQL Rijen verwijderen uit selectie

Zoekopdracht verwijderen in PostgreSQL

De VERWIJDER verklaring in PostgreSQL Wordt gebruikt om een โ€‹โ€‹of meer records uit een tabel te verwijderen. Om alleen geselecteerde rijen uit een tabel te verwijderen, PostgreSQL Hiermee kunt u de DELETE-instructie combineren met de WHERE-clausule; anders worden alle records in de tabel verwijderd.

PostgreSQL Syntaxis voor verwijderingsquery

De DELETE-instructie kan worden gedefinieerd met behulp van de onderstaande syntaxis:

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

Kenmerken

De volgende parameters zijn beschikbaar:

  • met-queryDe WITH-clausule stelt u in staat om binnen de DELETE-query naar een of meer subquery's te verwijzen op basis van hun naam.
  • tafel naam: de naam van de tabel waaruit records moeten worden verwijderd.
  • alias: een vervanging voor de naam van de doeltabel.
  • using-list: tabeluitdrukkingen waarmee kolommen uit andere tabellen in de WHERE-clausule kunnen worden gebruikt.
  • voorwaarden): optioneel. Dit zijn de voorwaarden waaraan moet worden voldaan om records te verwijderen. Als dit gedeelte niet is ingevuld, worden alle records met de opgegeven tabelnaam verwijderd.
  • cursornaam: de cursor die gebruikt moet worden in de WHERE CURRENT OF-voorwaarde. De laatst opgehaalde rij door deze cursor wordt verwijderd.
  • uitvoer-expressie: de expressie die door de DELETE-instructie moet worden verwerkt en geretourneerd nadat elke rij is verwijderd.
  • uitvoernaam: de naam die moet worden gebruikt voor de geretourneerde kolom.

Houd er rekening mee dat, aangezien de DELETE-instructie de hele rij verwijdert, u de kolomnamen niet hoeft op te geven.

PostgreSQL Query met รฉรฉn voorwaarde verwijderen

De DELETE-instructie kan worden gebruikt met รฉรฉn enkele voorwaarde, die wordt ingesteld met behulp van de WHERE-clausule. Neem bijvoorbeeld de tabel 'Price' met de volgende gegevens:

Prijs:

PostgreSQL Query met รฉรฉn voorwaarde verwijderen

Laten we het record met ID 4 verwijderen:

DELETE FROM Price
WHERE id = 4;

Bovenstaande opdracht verwijdert de records met ID 4. Laten we controleren of de verwijdering is gelukt:

PostgreSQL Query met รฉรฉn voorwaarde verwijderen

De rij met ID 4 is verwijderd.

Query met twee voorwaarden verwijderen

De PostgreSQL De DELETE-instructie kan ook twee voorwaarden bevatten. Deze twee voorwaarden moeten worden samengevoegd met behulp van de AND-operator. We gebruiken hiervoor de volgende tabel:

Prijs:

PostgreSQL Query met twee voorwaarden verwijderen

Beschouw het onderstaande voorbeeld:

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

In het bovenstaande commando verwijderen we de rij met ID 3 en prijs 300. We kunnen de tabel nu opvragen:

SELECT * FROM Price;

Dit geeft het volgende terug:

PostgreSQL Query met twee voorwaarden verwijderen

Het record met een ID van 3 en een prijs van 300 is verwijderd.

PostgreSQL Verwijder query met behulp van de EXISTS-voorwaarde

Met de BESTAAT Je kunt de DELETE-opdracht complexer maken. Soms is het nodig om records in de ene tabel te verwijderen op basis van records in een andere tabel.

Omdat de FROM-clausule het niet mogelijk maakt om records uit meer dan รฉรฉn tabel op te geven bij het verwijderen van een record, is de EXISTS-clausule erg handig. We hebben de volgende twee tabellen:

Boek:

PostgreSQL Verwijder query met behulp van de EXISTS-voorwaarde

Prijs:

PostgreSQL Verwijder query met behulp van de EXISTS-voorwaarde

Vervolgens kunnen we de volgende query uitvoeren:

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

Met dit commando worden rijen uit de tabel 'Boek' verwijderd die een overeenkomend ID in de tabel 'Prijs' hebben met een prijs lager dan 250.

De boekentabel ziet er nu als volgt uit:

PostgreSQL Verwijder query met behulp van de EXISTS-voorwaarde

Het record met ID 1 is verwijderd.

Hoe verwijder ik een rij in PostgreSQL met behulp van pgAdmin

Dezelfde verwijderingsquery's kunnen ook visueel worden uitgevoerd via de pgAdmin-interface, door de onderstaande stappen te volgen:

Onder รฉรฉn voorwaarde

Stap 1) Log in op uw pgAdmin-account. Open pgAdmin en log in met uw inloggegevens.

Stap 2) Maak een demo-database aan.

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

Rij verwijderen in PostgreSQL met behulp van pgAdmin

Stap 3) Typ de onderstaande query in de query-editor:

DELETE FROM Price
WHERE id = 4;

Stap 4) Klik op de knop Uitvoeren.

Rij verwijderen in PostgreSQL met behulp van pgAdmin

Stap 5) Laten we controleren of de rij is verwijderd:

Rij verwijderen in PostgreSQL met behulp van pgAdmin

Met twee voorwaarden

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

Rij verwijderen in PostgreSQL met behulp van pgAdmin

Stap 3) Typ de query in de query-editor:

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

Stap 4) Klik op de knop Uitvoeren.

Rij verwijderen in PostgreSQL met behulp van pgAdmin

Stap 5) Laten we controleren of de verwijdering succesvol is:

Rij verwijderen in PostgreSQL met behulp van pgAdmin

EXISTS-voorwaarde gebruiken

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

Rij verwijderen met behulp van de EXISTS-voorwaarde in pgAdmin

Stap 3) Typ de query in de query-editor:

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

Stap 4) Klik op de knop Uitvoeren.

Rij verwijderen met behulp van de EXISTS-voorwaarde in pgAdmin

Stap 5) Laten we controleren of de verwijdering succesvol is:

Rij verwijderen met behulp van de EXISTS-voorwaarde in pgAdmin

Download de database die in deze zelfstudie wordt gebruikt

Veelgestelde vragen

TRUNCATE verwijdert direct alle rijen en reset de opslag, maar negeert WHERE-clausules en triggers per rij. DELETE verwijdert geselecteerde rijen met behulp van een WHERE-clausule, activeert triggers per rij en kan binnen een transactie worden teruggedraaid.

Voeg een USING-clausule toe: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. Deze clausule koppelt de tweede tabel en verwijdert overeenkomende rijen, wat hetzelfde resultaat oplevert als EXISTS, maar met een duidelijkere syntaxis die lijkt op een join.

RETURNING geeft kolommen weer van de rijen die zojuist in dezelfde instructie zijn verwijderd. Schrijf DELETE FROM Price WHERE id = 4 RETURNING *, en PostgreSQL De verwijderde gegevens worden teruggestuurd, zodat applicaties de wijziging kunnen registreren of bevestigen.

Ja. Plaats de DELETE-bewerking in een transactie met BEGIN en voer vervolgens ROLLBACK uit om deze ongedaan te maken of COMMIT om de wijziging te behouden. Totdat u de wijziging vastlegt, kunnen de verwijderde rijen worden hersteld, wat bescherming biedt tegen onbedoelde verwijderingen.

Bewaar รฉรฉn kopie per groep met behulp van de verborgen kolom ctid: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. Dit verwijdert dubbele rijen en behoudt รฉรฉn record.

Voer hetzelfde filter eerst uit als een SELECT-query, of open een transactie met BEGIN en gebruik RETURNING om de betreffende rijen te inspecteren. RevDoor het WHERE-resultaat te bekijken vรณรณrdat je COMMIT uitvoert, voorkom je dat er meer rijen worden verwijderd dan de bedoeling was.

AI-assistenten vertalen regels in begrijpelijke taal naar een DELETE-instructie met de juiste WHERE-clausule, suggereren EXISTS of USING voor verwijderingen tussen tabellen en markeren instructies die een voorwaarde missen waardoor de hele tabel leeg zou worden.

Ja. Een AI-copiloot controleert elke DELETE-bewerking, waarschuwt wanneer er geen WHERE-clausule aanwezig is en adviseert een transactie of een RETURNING-preview, waardoor het risico op een onbedoelde volledige tabelverwijdering wordt verkleind.

Vat dit bericht samen met: