SQL leren: Rijen verwijderen met DELETE
Opruimen
Sinterklaas is voorbij, de aardbeien zijn uit het seizoen en drie klanten annuleerden hun bestelling. "Die rommel mag weg", zegt Jens. Voorzichtig: wat je verwijdert, is weg.
Rijen weghalen
DELETE FROM verwijdert rijen uit een tabel. Met WHERE kies je welke. Je noemt geen kolommen: je haalt altijd hele rijen weg.
Hier verdwijnt het klaasje uit de webshop. Onderaan zie je de verwijderde rij nog even, doorstreept.
DELETE FROM producten WHERE naam = 'Klaasje'Eerst kijken, dan schrappen
Een DELETE zonder WHERE maakt de hele tabel leeg. Daarom werken goede analisten zo: eerst een SELECT * met dezelfde WHERE, en pas als die precies de juiste rijen toont, vervang je SELECT * door DELETE.
Hieronder de proef voor producten die niet meer actief zijn. Twee rijen: dat klopt.
SELECT * FROM producten WHERE actief = 0| id | naam | categorie | prijs | voorraad | glutenvrij | actief |
|---|---|---|---|---|---|---|
| 11 | Aardbeientaart | gebak | 18.5 | 2 | 0 | 0 |
| 17 | Klaasje | seizoen | 3.5 | 3 | 0 | 0 |
Weesrijen
Elke bestelling heeft regels in bestelregels, die via bestelling_id naar de bestelling wijzen. Verwijder je alleen de bestelling, dan blijven haar regels achter. Ze wijzen naar een bestelling die niet meer bestaat: weesrijen.
Hier wordt bestelling 7 verwijderd. De query onderaan zoekt regels zonder bestelling, en vindt er nu één.
Veel databases weigeren zo'n DELETE zelfs. Verwijder dus eerst de regels en pas daarna de bestelling.
DELETE FROM bestellingen WHERE id = 7Probeer het zelf
Verwijder alle producten die niet meer actief zijn.
Klaar voor meer?
De volledige les heeft 7 oefeningen, van makkelijk naar uitdagend, met hints, punten en een reeks die je kan opbouwen.
Begin aan de les