Wat NULL echt betekent
Onbekend, niet nul en niet leeg.
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 | NULLNULL is niet nul
Een veelgemaakte fout is om NULL te behandelen als het getal 0. Ze zijn volledig verschillend.
0is een bekende waarde: nul.NULLbetekent 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 yetNULL 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.NULLbetekent 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 unknownLogica 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; -- unknownNULL = 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 AliceNULL 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
INSERTwaarbij een kolom die NULL toestaat wordt weggelaten. - Een outer join zonder overeenkomende rij aan één kant.
- Een aggregatie over nul rijen, bijvoorbeeld
SUMvan een lege verzameling dieNULLoplevert.
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 | NULLNULL-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 togetherSamenvatting 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. WHEREhoudt 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!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
- Wat NULL echt betekent
- IS NULL en IS NOT NULL
- COALESCE en NULLIF
- NULL in aggregaties en joins