SQL-trackLes 2 van 10

🔍 SELECT & WHERE

Filter precies de data die je nodig hebt — operators, LIKE, NULL en meer.

⏱ 25 min6 stappenInteractieve 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 >= 50
Voorbeelden
-- 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 J
LIKE 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
  1. Toon gebruikers met leeftijd groter dan of gelijk aan 30
  2. Toon producten uit de categorie 'Meubels' of 'Wonen' (gebruik IN)
  3. Toon namen van gebruikers waarvan de naam eindigt op 'en'
  4. 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.

Les 3: Sorteren & beperken →