SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

  1. Home
  2. Blog
  3. Databases en SQL

Databases en SQL

SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

NULL veroorzaakt enkele van de stilste bugs in SQL, met query’s die zonder fouten worden uitgevoerd en toch rijen verliezen of gemiddelden scheeftrekken. Leer hoe NULL zich echt gedraagt, met geteste voorbeelden, en hoe u er veilig mee om kunt gaan.

9 min leestijd
SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

Belangrijkste punten

  • NULL betekent een ontbrekende of onbekende waarde. Het is niet nul en het is geen lege string.
  • Test het met IS NULL, want = NULL komt nooit met iets overeen.
  • De meeste berekeningen met NULL leveren NULL op, en WHERE behoudt alleen rijen die zeker waar zijn.
  • Aggregaten slaan NULL’s over, waardoor een gemiddelde stilletjes kan worden gewijzigd.

Een zoekopdracht wordt zonder fouten uitgevoerd en retourneert een redelijk ogend getal, maar er ontbreken rijen en het gemiddelde is verkeerd. SQL NULL-waarden zijn vaak de oorzaak. NULL gedraagt ​​zich niet als een normale waarde, en dat valt zowel beginners als ervaren ontwikkelaars op.

Deze handleiding laat precies zien hoe NULL zich gedraagt. We hebben elke query uitgevoerd in SQLite 3.50 en de weergegeven resultaten zijn afkomstig van die run. Het grootste deel van dit gedrag is standaard-SQL, en we merken op waar databases verschillen, zoals de NULL-sorteervolgorde en de manier waarop Oracle met lege tekenreeksen omgaat.

Wat is NULL?

NULL is een markering die betekent dat een waarde ontbreekt of onbekend is. Het is geen waarde in de gebruikelijke zin, dus dit zijn allemaal verschillende dingen:

Waarde Betekenis Voorbeeld voor een telefoonzuil
NUL Onbekend of niet verstrekt Wij kennen het nummer niet
'' Een bekende, lege tekstwaarde Als blanco ingediend
0 Het getal nul Niet relevant voor tekst, maar reëel voor bedragen

Het verschil is vooral van belang voor de bedragen. Een bonus van 0 betekent dat de persoon niets heeft ontvangen. Een NULL-bonus betekent dat niemand het nog weet.

De voorbeeldtafel

CREATE TABLE employees (
  id INT, name TEXT, phone TEXT, bonus INT, manager_id INT
);

INSERT INTO employees VALUES
 (1,'Meera','555-0101',500,NULL),
 (2,'Arjun',NULL,300,1),
 (3,'Sara','',NULL,1),
 (4,'Ravi',NULL,NULL,2);

Merk op dat Sara een lege string voor de telefoon heeft, terwijl Arjun en Ravi NULL hebben. De twee worden heel verschillend behandeld.

Testen op NULL

Dit is de fout die bijna iedereen in eerste instantie maakt:

SELECT name FROM employees WHERE phone = NULL;
-- (no rows)

SELECT name FROM employees WHERE phone IS NULL;
-- Arjun
-- Ravi

SELECT name FROM employees WHERE phone IS NOT NULL;
-- Meera
-- Sara

De eerste query is geldige SQL en geeft geen fout. Het retourneert eenvoudigweg niets, omdat het vergelijken van iets met NULL nooit waar is. Sara verschijnt onder IS NOT NULL, omdat een lege string een echte waarde is. In Oracle wordt een lege string echter behandeld als NULL, wat een opmerkelijke uitzondering is.

Driewaardige logica

In de meeste programmeertalen is een voorwaarde waar of onwaar. SQL voegt een derde resultaat toe: onbekend. Als je een waarde niet kent, kun je niet zeggen of deze gelijk is aan 5. En van twee onbekende waarden is niet bekend dat ze gelijk zijn, en daarom is NULL = NULL niet waar. In onze test retourneerden al deze NULL:

SELECT NULL = NULL, NULL <> 1, 1 + NULL, 'a' || NULL;

-- NULL | NULL | NULL | NULL

Het combineren van voorwaarden volgt zorgvuldige regels. Hier zijn de resultaten van onze run, waarbij 1 waar is en 0 onwaar:

Expressie Resultaat Waarom
WAAR EN NUL NUL Hangt af van het onbekende deel
ONWAAR EN NIETIG Vals Vals, wat het onbekende ook is
WAAR OF NUL Waar Waar, wat het onbekende ook is
ONWAAR OF NUL NUL Hangt af van het onbekende deel
NIET NUL NUL Het tegenovergestelde van onbekend is onbekend

Rijen die verdwijnen van WAAR

WHERE behoudt een rij alleen als de voorwaarde waar is. Rijen waarvan het resultaat onbekend is, worden geschrapt, samen met de rijen die onwaar zijn. Dit leidt tot verrassende resultaten:

SELECT name FROM employees WHERE phone <> '555-0101';

-- Sara

Je zou verwachten dat Arjun en Ravi verschijnen, aangezien hun telefoon zeker niet dat nummer is. Maar hun telefoon is onbekend, dus het resultaat is onbekend, en ze verdwijnen. Om ze op te nemen, moet je dat expliciet zeggen: WHERE phone <> '555-0101' OR phone IS NULL. Negeren helpt ook niet:

SELECT name FROM employees WHERE NOT (bonus > 400);

-- Arjun

Sara en Ravi hebben geen bonus, dus verschijnen ze niet in bonus > 400 en ook niet in de tegenovergestelde film. Dit is een belangrijk ding om te onthouden: een voorwaarde en de ontkenning ervan bestrijken niet altijd elke rij.

COALESCE: zorg voor een terugval

COALESCE retourneert de eerste niet-NULL-waarde in de lijst en werkt in alle grote databases:

SELECT COALESCE(NULL, NULL, 'third', 'fourth');
-- third

SELECT name, COALESCE(phone, 'no phone') FROM employees;
-- Meera | 555-0101
-- Arjun | no phone
-- Sara  |
-- Ravi  | no phone

Sara lijkt nog steeds leeg, omdat een lege string niet NULL is. Soortgelijke functies bestaan, zoals IFNULL in MySQL en SQLite, ISNULL in SQL Server en NVL in Oracle. COALESCE is de draagbare keuze. Ons eerdere punt over berekeningen is hier ook van toepassing. bonus + 100 geeft NULL voor iedereen zonder bonus, dus schrijf COALESCE(bonus, 0) + 100 als het behandelen van een ontbrekende bonus als nul correct is voor uw bedrijf.

NULLIF: verander een waarde in NULL

NULLIF(a, b) retourneert NULL als de twee waarden gelijk zijn, en retourneert anders a. Twee toepassingen zijn bijzonder nuttig. Het kan tijdelijke waarden opschonen:

SELECT name, NULLIF(phone, '') FROM employees WHERE id = 3;
-- Sara | NULL

SELECT name FROM employees
WHERE COALESCE(NULLIF(phone, ''), '') = '';
-- Arjun
-- Sara
-- Ravi

Die tweede query is een handige manier om waarden te vinden die “ontbrekend of leeg” zijn. Het kan ook beschermen tegen delen door nul, wat in veel databases een fout veroorzaakt:

SELECT total / NULLIF(quantity, 0) FROM sales;

Wanneer quantity 0 is, levert dit NULL op in plaats van dat het mislukt. In onze test retourneerde SELECT 100 / NULLIF(0, 0) NULL.

Aggregaten slaan NULL over

Dit is waar NULL de meeste schade aanricht aan rapporten:

SELECT COUNT(*), COUNT(bonus), SUM(bonus), AVG(bonus),
       AVG(COALESCE(bonus, 0))
FROM employees;

-- 4 | 2 | 800 | 400.0 | 200.0
Expressie Resultaat Wat het betekent
COUNT(*) 4 Alle rijen
COUNT(bonus) 2 Alleen rijen met een bonus
SUM(bonus) 800 NULL’s worden genegeerd
AVG(bonus) 400 800 gedeeld door 2, niet door 4
AVG(COALESCE(bonus, 0)) 200 800 gedeeld door 4

Dus wat is de gemiddelde bonus, 400 of 200? Het hangt af van wat NULL betekent in uw gegevens. Als NULL betekent dat er geen bonus is betaald, dan is 200 juist. Als het betekent ‘nog niet besloten’, dan heeft 400 wellicht gelijk. De database kan deze beslissing niet voor u nemen, dus de vraag moet naar iemand gaan die de business kent.

Een gerelateerde valkuil: SUM zonder waarden is NULL in plaats van 0. Toen we alleen rijen optelden zonder bonus, kregen we NULL, terwijl COUNT 0 retourneerde. Applicatiecode die een getal verwacht, kan hierop crashen, dus wrap it: COALESCE(SUM(bonus), 0).

Tip: Als het totaal van een rapport er niet goed uitziet, vergelijk dan COUNT(*) met COUNT(column). Elke opening ertussen vertelt u meteen hoeveel NULL’s die kolom heeft.

GROUP BY, sorteren en DISTINCT

Hoewel NULL’s in vergelijkingen “niet gelijk” zijn, behandelen deze bewerkingen ze als één groep:

SELECT bonus, COUNT(*) FROM employees GROUP BY bonus ORDER BY bonus;
-- NULL | 2
--  300 | 1
--  500 | 1

SELECT DISTINCT bonus FROM employees;
-- 500, 300, NULL

Zie SQL GROUP BY en HAVING voor meer informatie over groeperen. Sorteervolgorde is waar databases echt van verschillen. SQLite en MySQL behandelen NULL als de kleinste waarde, terwijl PostgreSQL en Oracle deze als de grootste behandelen. Dus dezelfde ORDER BY bonus DESC kan NULL’s als laatste in de ene en als eerste in de andere plaatsen. Met PostgreSQL, Oracle en moderne SQLite kunt u dit rechtstreeks aangeven met behulp van NULLS FIRST of NULLS LAST.

Sluit zich aan

Een join-voorwaarde die gebruik maakt van = komt nooit overeen met NULL, dus rijen met een NULL-sleutel vallen weg uit een inner join:

SELECT e.name FROM employees e
JOIN employees m ON m.id = e.manager_id;
-- Arjun, Sara, Ravi    (Meera is gone)

SELECT e.name, m.name FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;
-- Meera | NULL
-- Arjun | Meera
-- Sara  | Meera
-- Ravi  | Arjun

Meera heeft geen manager, dus een inner join laat stilletjes dat rijtje vallen. A LEFT JOIN behoudt het, en creëert ook eigen NULL’s voor de ontbrekende zijde. Lees meer in SQL-joins uitgelegd.

De NIET IN-val

Eén enkele NULL in een NOT IN lijst wist elk resultaat:

SELECT name FROM employees WHERE manager_id NOT IN (1);
-- Ravi

SELECT name FROM employees WHERE manager_id NOT IN (1, NULL);
-- (no rows)

De tweede vorm betekent manager_id <> 1 AND manager_id <> NULL, en dat laatste kan nooit waar zijn. Dit is vooral gevaarlijk bij subquery’s, waarbij een NULL onopgemerkt kan binnenkomen. Gebruik in plaats daarvan NOT EXISTS, zoals uitgelegd in onze tutorial over SQL-subquery’s. Meera ontbreekt ook in het eerste resultaat, omdat manager_id van die rij NULL is.

Ontwerpen met NULL

  • Gebruik standaard NOT NULL. Sta NULL alleen toe als er echt een waarde kan ontbreken.
  • Voeg zinvolle standaardwaarden toe. Bijvoorbeeld quantity INT NOT NULL DEFAULT 0.
  • Gebruik geen magische waarden. Een datum van 01-01-1900 of een leeftijd van -1 die in de plaats komt van ‘onbekend’ zal uw berekeningen verpesten.
  • Ken het UNIEKE gedrag. De meeste databases staan ​​meerdere NULL’s toe in een UNIQUE kolom, en onze test heeft er twee zonder fouten ingevoegd. SQL Server is een uitzondering, omdat dit normaal gesproken toegestaan ​​is.
  • Houd er rekening mee dat een primaire sleutel niet NULL kan zijn. Zie primaire sleutel versus externe sleutel.
  • Test met NULL’s. Testgegevens zonder NULL’s verbergen deze bugs. Voeg ze expres toe, net als bij andere randgevallen.

Tot slot

Behandel NULL als “onbekend”, en het meeste gedrag begint logisch te worden: onbekend plus één is onbekend, en onbekend is gelijk aan onbekend waarvan niet bekend is dat het waar is. Controleer deze week een van uw eigen rapporten. Controleer null-kolommen met behulp van COUNT(*) tegen COUNT(column), zoek naar NOT IN en beslis wat NULL in elk gemiddelde zou moeten betekenen.

Veelgestelde vragen

Wat is NULL in SQL?

NULL is een markering voor een ontbrekende of onbekende waarde. Het verschilt van nul en van een lege string, en vereist een speciale behandeling bij vergelijkingen.

Waarom werkt = NULL niet?

Als je iets vergelijkt met NULL, krijg je onbekend in plaats van waar, dus WHERE gooit de rij weg. Gebruik IS NULL of IS NOT NULL om dit te testen.

Wat is het verschil tussen COALESCE en ISNULL?

COALESCE is standaard SQL en accepteert veel argumenten. ISNULL is specifiek voor SQL Server en er zijn er twee nodig. Voor draagbare code geeft u de voorkeur aan COALESCE.

Bevat COUNT NULL-waarden?

COUNT(*) telt alle rijen, inclusief de rijen met NULL’s. COUNT(kolom) telt alleen rijen waarbij die kolom niet NULL is, wat een kleiner getal kan opleveren.

Is NULL hetzelfde als een lege string?

Nee, in de meeste databases. Een lege tekenreeks is een bekende waarde zonder tekens, en NULL betekent onbekend. Oracle is een opmerkelijke uitzondering, omdat het lege strings als NULL behandelt.

Blijf leren

Werk met Stack Quora

Hulp nodig met testen, WordPress of SEO?

We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.

Blijf lezen

Meer handleidingen over testen, AI en moderne ontwikkeling

Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.

Kunstmatige intelligentie

AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen

AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…

Lees artikel →
DevOps

Omgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan

Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…

Lees artikel →
Softwareontwikkeling

API-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten

API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…

Lees artikel →
Testautomatisering

Spotten in Python: unittest.mock, patch en de fouten die tests doen liegen

Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…

Lees artikel →
Softwaretesten

Codedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent

Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…

Lees artikel →
Databases & SQL

DELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken

DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…

Lees artikel →
Databases & SQL

SQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden

SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…

Lees artikel →
Softwareontwikkeling

TypeScript-interface versus type: echte verschillen, getest met de compiler

TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…

Lees artikel →
Softwareontwikkeling

Python *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden

Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…

Lees artikel →
Softwareontwikkeling

Python Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken

Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…

Lees artikel →
Kunstmatige intelligentie

Wat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren

Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…

Lees artikel →
DevOps

Monitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen

Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…

Lees artikel →
DevOps

Docker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier

Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…

Lees artikel →
Testautomatisering

TDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt

TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…

Lees artikel →
Softwaretesten

Gebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden

Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…

Lees artikel →
Databases & SQL

SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…

Lees artikel →
Databases & SQL

SQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten

SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…

Lees artikel →
Softwareontwikkeling

Wat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld

Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…

Lees artikel →
Softwareontwikkeling

JavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden

De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…

Lees artikel →
Softwareontwikkeling

Python-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden

Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …

Lees artikel →
Kunstmatige intelligentie

Wat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…

Lees artikel →
DevOps

Implementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen

Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…

Lees artikel →
Testautomatisering

Schilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen

Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…

Lees artikel →
Softwaretesten

Belastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden

Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …

Lees artikel →
Softwaretesten

Testcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken

Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…

Lees artikel →
Databases & SQL

Optimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing

Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…

Lees artikel →
Databases & SQL

SQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties

SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…

Lees artikel →
Softwareontwikkeling

JavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs

Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…

Lees artikel →
Softwareontwikkeling

Python-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden

Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…

Lees artikel →
Softwareontwikkeling

Python-klassen en -objecten: OOP-zelfstudie met echte voorbeelden

Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…

Lees artikel →
Kunstmatige intelligentie

Wat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype

Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…

Lees artikel →
DevOps

Linux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden

Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…

Lees artikel →
Testautomatisering

Selenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen

Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …

Lees artikel →
Softwaretesten

Equivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden

Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…

Lees artikel →
Softwaretesten

Ernst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden

Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…

Lees artikel →
Databases & SQL

Tutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden

Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …

Lees artikel →
Databases & SQL

SQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus

SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…

Lees artikel →
Softwareontwikkeling

Git merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt

Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.

Lees artikel →
Softwareontwikkeling

Python list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt

Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.

Lees artikel →
Databases & SQL

SQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)

Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.

Lees artikel →