SQL Academy · Les

Wat NULL echt betekent

Onbekend, niet nul en niet leeg.

Les 1 van 413 stappen

Wat NULL echt betekent is een gratis SQL Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject SQL Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus SQL Academy bevat in totaal 4 lessen.

Maak kennis met NULL

NULL is de manier waarop SQL zegt „Ik weet het niet“. Het is niet nul, geen lege tekenreeks en niet false — het vertegenwoordigt de afwezigheid van een waarde.

Telkens wanneer een kolom geen bekende waarde heeft, slaat de database daar NULL op. Leren hoe NULL zich gedraagt, is een van de belangrijkste stappen bij het schrijven van correcte queries.

-- A customers table where some phone numbers are unknown
SELECT id, name, phone
FROM customers;

-- id | name    | phone
-- ---+---------+------------
--  1 | Alice   | 555-0101
--  2 | Bob     | NULL        <- phone unknown
--  3 | Carol   | NULL

NULL is niet nul

Een veelgemaakte fout is om NULL te behandelen als het getal 0. Ze zijn volledig verschillend.

  • 0 is een bekende waarde: nul.
  • NULL betekent dat de waarde ontbreekt of onbekend is.

Als het saldo van een rekening 0 is, heeft de klant geen geld. Als het NULL is, weten we het saldo eenvoudigweg nog niet.

SELECT id, balance
FROM accounts;

-- id | balance
-- ---+--------
--  1 | 0        <- known: empty wallet
--  2 | NULL     <- unknown: not recorded yet

NULL is geen lege tekenreeks

Voor tekstkolommen verschillen NULL en de lege tekenreeks '' ook van elkaar.

  • '' is een tekenreeks met lengte nul — een bekende, aanwezige waarde.
  • NULL betekent dat er helemaal geen tekenreeks is opgegeven.

Je kunt bewust een lege notitie opslaan of de notitie helemaal weglaten. SQL maakt onderscheid tussen beide.

SELECT id, note, length(note) AS note_len
FROM tickets;

-- id | note | note_len
-- ---+------+----------
--  1 | ''   |        0   <- empty but present
--  2 | NULL |     NULL   <- absent; length is also unknown

Logica met drie waarden

Normale logica heeft twee uitkomsten: true en false. SQL voegt daar een derde aan toe: onbekend.

Elke vergelijking met NULL levert unknown op, omdat je geen waarde kunt vergelijken die je niet hebt. Dit heet logica met drie waarden.

-- Each comparison with NULL returns UNKNOWN, not true/false
SELECT
  NULL = 5      AS eq,      -- unknown
  NULL <> 5     AS neq,     -- unknown
  NULL = NULL   AS self_eq, -- unknown (!)
  NULL > 0      AS gt;      -- unknown

NULL = NULL is niet waar

De meest verrassende regel is dat NULL = NULL niet true is. De uitkomst is unknown.

Waarom? Als twee waarden allebei onbekend zijn, kun je niet zeggen dat ze gelijk zijn — ze kunnen van alles zijn. Om te controleren of iets NULL is, moet je IS NULL gebruiken in plaats van =.

-- Wrong: never returns rows, because NULL = NULL is unknown
SELECT * FROM customers WHERE phone = NULL;

-- Right: use IS NULL
SELECT * FROM customers WHERE phone IS NULL;

WHERE houdt alleen ware rijen

Een WHERE-clausule houdt een rij alleen bij als de voorwaarde waar is. Rijen waarvoor de voorwaarde false of unknown is, worden weggelaten.

Daarom verwijdert filteren op een NULL-kolom met = stilletjes rijen die je misschien wel verwachtte te zien.

-- Bob and Carol have NULL phones, so phone = '555-0101'
-- is UNKNOWN for them and they are excluded.
SELECT name
FROM customers
WHERE phone = '555-0101';

-- Returns only Alice

NULL werkt door in berekeningen

NULL is besmettelijk in uitdrukkingen. Bijna elke rekenkundige bewerking of tekenreeksbewerking met NULL levert NULL op.

Als je een van de invoerwaarden niet kent, kun je de uitkomst ook niet kennen.

SELECT
  10 + NULL    AS sum,    -- NULL
  100 * NULL   AS prod,   -- NULL
  NULL / 2     AS div,    -- NULL
  'Hi ' || NULL AS greet; -- NULL (string concat)

Waar NULL-waarden vandaan komen

NULL-waarden komen in verschillende veelvoorkomende situaties voor:

  • Een INSERT waarbij een kolom die NULL toestaat wordt weggelaten.
  • Een outer join zonder overeenkomende rij aan één kant.
  • Een aggregatie over nul rijen, bijvoorbeeld SUM van een lege verzameling die NULL oplevert.

Als je de bron kent, kun je beter beslissen hoe je deze waarden verwerkt.

-- Omitting phone inserts NULL automatically
INSERT INTO customers (id, name) VALUES (4, 'Dan');

SELECT id, name, phone FROM customers WHERE id = 4;
-- 4 | Dan | NULL

NULL-waarden voorkomen: NOT NULL

Als een kolom altijd een waarde moet hebben, definieer je die als NOT NULL. De database weigert dan elke rij die de kolom leeg probeert te laten.

Dit is een krachtige manier om je gegevens schoon te houden en latere verrassingen met NULL te voorkomen.

CREATE TABLE users (
  id    integer PRIMARY KEY,
  email text NOT NULL,   -- must always be provided
  bio   text             -- nullable: optional
);

-- This fails: email cannot be NULL
INSERT INTO users (id, bio) VALUES (1, 'hi');

NULL en DISTINCT / GROUP BY

Er is één plaats waar SQL NULL-waarden als gelijk behandelt: bij groeperen en het verwijderen van dubbele waarden.

In DISTINCT en GROUP BY worden alle NULL-waarden samengevoegd in één enkele groep, ook al is NULL = NULL ergens anders onbekend. Deze uitzondering maakt groeperen bruikbaar.

SELECT phone, count(*)
FROM customers
GROUP BY phone;

-- phone    | count
-- ---------+------
-- 555-0101 |     1
-- NULL     |     2   <- all NULLs grouped together

Samenvatting van het denkmodel

Onthoud deze regels telkens wanneer je een NULL ziet:

  • NULL betekent onbekend, niet nul of leeg.
  • Vergelijkingen met NULL leveren onbekend op — gebruik IS NULL / IS NOT NULL.
  • WHERE houdt alleen ware rijen.
  • Rekenkundige bewerkingen met NULL leveren NULL op.
  • Bij groeperen vormen NULL-waarden één groep.
-- The two correct NULL tests
SELECT name FROM customers WHERE phone IS NULL;
SELECT name FROM customers WHERE phone IS NOT NULL;

Snelle controle

Waartoe wordt de expressie NULL = NULL geëvalueerd in standaard-SQL?

Samenvatting

Je begrijpt nu wat NULL werkelijk is: een markering voor een ontbrekende of onbekende waarde, onderscheiden van 0 en ''.

Je hebt SQL's logica met drie waarden gezien, waarom = NULL nooit werkt, hoe NULL door rekenkundige bewerkingen werkt en hoe WHERE onbekende rijen weglaat. Vervolgens leer je de juiste manier om NULL-waarden te controleren met IS NULL en IS NOT NULL.

-- Remember the golden rule
SELECT * FROM customers WHERE phone IS NULL;     -- correct
-- SELECT * FROM customers WHERE phone = NULL;   -- always empty!
Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
46
Lessen
183

Veelgestelde vragen

Is de les “Wat NULL echt betekent” gratis?

Ja — de volledige tekst van “Wat NULL echt betekent” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus SQL Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus SQL Academy bevat in totaal 4 lessen.

Wat leer ik in “Wat NULL echt betekent”?

Onbekend, niet nul en niet leeg. Je oefent met SQL Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met SQL Academy te beginnen?

Ervaring vooraf is niet nodig. SQL Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Wat NULL echt betekent”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over SQL Academy?

Ja. Elke les over SQL Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Wat NULL echt betekent
  2. IS NULL en IS NOT NULL
  3. COALESCE en NULLIF
  4. NULL in aggregaties en joins
← Terug naar SQL Academy