Leer hoe je overtollige records verwijdert met het DELETE-statement in SQL. Ontdek praktische voorbeelden en tips voor een effectieve databeheerstrategie.
Testgegevens die niet meer nodig zijn, of gebruikersdata dat niet meer van toepassing is. Er zijn genoeg redenen om losse records uit de database te willen verwijderen.
Het beheren van gegevens in je tabellen staat gelukkig toe dat je door middel van een DELETE statement in SQL records kunt verwijderen.
Het gebruik van WHERE clausule
Naast het DELETE-statement is er in de SQL-query bijna altijd wel een WHERE
clausule te vinden. Dit is om de set met te verwijderen records te beperken. Is het statement er niet, dan worden namelijk alle records in de tabel verwijderd.
DELETE Tabelnaam WHERE kolomnaam=waarde
Soms wil je bewust alle records wilt weggooien. In die situaties is de kans ook groot dat je daarbij ook de indexen, zoals een primaire sleutel wilt resetten. Misschien is het dan juist weer handiger om TRUNCATE
te gebruiken. Hiermee reset je als het ware je database tabel.
DELETE in de SQL praktijk
We gebruiken voor de volgende voorbeelden van het DELETE
-statement de onderstaande dataset van de tabel Persoon.
id, voornaam, achternaam 1, 'Henk', 'Janssen', 2, 'Petra', 'de klomp', 3, 'Sjoerd', 'Vermeulen', 4, 'Mieke', 'Sterk',
Om het records van de persoon met id 3 te verwijderen kunnen we de volgende query uitvoeren:
DELETE Persoon WHERE id = 3
Het alternatief is een combinatie van twee condities in de WHERE
-clausule. In plaats de records te verwijderen op basis van het id kiezen we juist voor de combinaties van de voor, – en het achternaam.
DELETE Persoon WHERE voornaam = 'Sjoerd' AND achternaam = 'Vermeulen'
Tip: Voor het testen van een DELETE
query is het handig om DELETE
te
vervangen door SELECT * FROM
. Als de query de juiste resultaten geeft dan kan DELETE
worden toegepast.
Verwijderen van gelegde relaties
Database zijn over het algemeen relationeel. Dit betekent dat je verbindingen tussen meerdere tabellen kunt leggen. Hierbij verwijst bijvoorbeeld een klantid in de tabel orders naar het id in de tabel klant.
Als je de tabellen goed hebt gespecificeerd dan kun je door middel van constraints gedrag bepalen bij het verwijderen van records. Door middel van ON DELETE CASCADE dwing je af dat gerelateerde records ook worden verwijderd.
Neem nu het voorbeeld van de tabellen klant en order. Een order kan niet bestaan zonder klant. Dus als een klant wordt verwijderd, dan wil je eigenlijk dus ook alle gekoppelde orders verwijderen. Hierover leg ik je binnenkort meer uit.