🔍 SELECT & WHERE
Filter precies de data die je nodig hebt — operators, LIKE, NULL en meer.
⏱ 25 min•6 stappen•Interactieve SQL-sandbox
Stap 1 / 6
WHERE — rijen filteren
Met WHERE bepaal je welke rijen je wilt teruggeven. Zonder WHERE krijg je alle rijen.
Vergelijkingsoperatoren
=gelijk aanleeftijd = 25!=niet gelijkactief != 0<kleiner danleeftijd < 30>groter danprijs > 100<=kleiner of gelijkleeftijd <= 30>=groter of gelijkprijs >= 50Voorbeelden
-- Gebruikers jonger dan 30
SELECT * FROM gebruikers WHERE leeftijd < 30;
-- Producten duurder dan €100
SELECT naam, prijs FROM producten WHERE prijs > 100;
-- Actieve gebruikers (actief = 1)
SELECT naam FROM gebruikers WHERE actief = 1;
BETWEEN — tussenwaarden
SELECT * FROM producten WHERE prijs BETWEEN 50 AND 200;
-- equivalent aan: prijs >= 50 AND prijs <= 200
Stap 2 / 6
AND, OR en NOT
Je kunt meerdere voorwaarden combineren met logische operatoren.
AND
Beide voorwaarden moeten waar zijn.
WHERE leeftijd > 20
AND actief = 1
OR
Minstens één voorwaarde moet waar zijn.
WHERE leeftijd < 20
OR leeftijd > 40
NOT
Keert de voorwaarde om.
WHERE NOT actief = 1
-- zelfde als: actief != 1
⚠️ Volgorde — gebruik haakjes!
-- Zonder haakjes: AND gaat vóór OR
WHERE categorie = 'Meubels' OR categorie = 'Wonen' AND prijs > 100
-- SQL leest dit als: Meubels OF (Wonen EN prijs>100)
-- Met haakjes — duidelijk!
WHERE (categorie = 'Meubels' OR categorie = 'Wonen') AND prijs > 100
IN — shorthand voor meerdere OR-waarden
-- In plaats van: WHERE categorie = 'Meubels' OR categorie = 'Wonen'
SELECT * FROM producten WHERE categorie IN ('Meubels', 'Wonen');
-- NOT IN
SELECT * FROM producten WHERE categorie NOT IN ('Elektronica');
Stap 3 / 6
LIKE — patroonmatching
LIKE vergelijkt tekst met een patroon. Twee wildcards zijn beschikbaar.
% — nul of meer tekens
'A%' — begint met A'%bakker' — eindigt op bakker'%an%' — bevat "an"_ — precies één teken
'_an' — 3 tekens, eindigt op "an"'J__' — 3 tekens, begint met JLIKE in de praktijk
-- Namen die beginnen met 'A'
SELECT * FROM gebruikers WHERE naam LIKE 'A%';
-- E-mails van het domein 'email.nl'
SELECT naam, email FROM gebruikers WHERE email LIKE '%@email.nl';
-- NOT LIKE
SELECT * FROM producten WHERE naam NOT LIKE '%laptop%';
SQLite: hoofdlettergevoelig?
In SQLite is LIKE standaard niet hoofdlettergevoelig voor ASCII-tekens. WHERE naam LIKE 'anna%' vindt ook "Anna".
Stap 4 / 6
NULL — de afwezigheid van waarde
NULL betekent "geen waarde" — het is niet nul, niet leeg, maar onbekend. Dit heeft speciale regels.
❌ De meest gemaakte fout
-- WERKT NIET — NULL vergelijken met = geeft altijd FALSE
SELECT * FROM producten WHERE beschrijving = NULL;
-- ✅ Gebruik IS NULL / IS NOT NULL
SELECT * FROM producten WHERE beschrijving IS NULL;
SELECT * FROM producten WHERE beschrijving IS NOT NULL;
NULL in berekeningen
-- NULL + iets = NULL (NULL "besmet" berekeningen)
SELECT 10 + NULL; -- geeft NULL
-- COALESCE — gebruik een standaardwaarde als NULL
SELECT naam, COALESCE(beschrijving, 'Geen beschrijving') FROM producten;
-- IFNULL (SQLite/MySQL)
SELECT naam, IFNULL(beschrijving, 'n.v.t.') FROM producten;
Sandbox — probeer IS NULL
Resultaat hier...
Stap 5 / 6
Oefening — WHERE in de praktijk
🎯 Opdrachten
- Toon gebruikers met
leeftijdgroter dan of gelijk aan 30 - Toon producten uit de categorie
'Meubels'of'Wonen'(gebruik IN) - Toon namen van gebruikers waarvan de naam eindigt op
'en' - Toon alle actieve gebruikers (
actief = 1) jonger dan 35
Resultaat verschijnt hier...
🧠 Kennischeck
🔍
Les 2 afgerond!
Je filtert nu data met WHERE, combineert condities en werkt correct met NULL.