SQL CASE WHEN-instructie: Syntaxis, echte voorbeelden en veelvoorkomende fouten
CASE WHEN is hoe je als-dan-logica in SQL schrijft. Leer beide formulieren en gebruik het vervolgens voor labels, draairapporten, aangepaste sortering en veilige updates, terwijl u de NULL- en bestelvalkuilen vermijdt.
CASEretourneert een waarde op basis van de eerste voorwaarde die waar is.- Zet de meest specifieke voorwaarden eerst, anders worden deze misschien nooit bereikt.
- Zonder
ELSEretourneren ongeëvenaarde rijenNULL. - Binnen
SUMofCOUNTzet CASE één query om in een compact rapport in draaitabelstijl.
De meeste rapporten hebben enige logica nodig: markeer bestellingen als groot of klein, tel betaalde en openstaande bestellingen naast elkaar, of toon dringende artikelen eerst. SQL CASE WHEN verwerkt dit allemaal rechtstreeks in een query en werkt in alle grote databases.
We hebben elke query hier in SQLite 3.50 uitgevoerd en de weergegeven resultaten zijn afkomstig van die run. CASE maakt deel uit van standaard SQL, dus het gedraagt zich voor deze voorbeelden op dezelfde manier in PostgreSQL, MySQL, SQL Server en Oracle.
Wat is GEVAL WANNEER?
CASE is een expressie, geen afzonderlijk commando. Het evalueert de voorwaarden op volgorde en retourneert een waarde, zodat het overal terecht kan waar een waarde is toegestaan: in SELECT, WHERE, GROUP BY, ORDER BY of binnen functies. Het eindigt altijd met END.
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE fallback
END
De voorbeeldtafel
CREATE TABLE orders (id INT, customer TEXT, total INT, status TEXT);
INSERT INTO orders VALUES
(1,'Asha',1200,'paid'), (2,'Ben',300,'pending'),
(3,'Asha',800,'paid'), (4,'Chitra',2500,'shipped'),
(5,'Dev',150,'cancelled'), (6,'Ben',NULL,'pending');
Merk op dat bestelling 6 geen totaal heeft. Die rij is later van belang.
CASE gezocht
Dit is de meer flexibele vorm, aangezien elke WHEN een volledige eigen voorwaarde heeft:
SELECT id, total,
CASE
WHEN total >= 1000 THEN 'large'
WHEN total >= 500 THEN 'medium'
ELSE 'small'
END AS size
FROM orders;
-- 1 | 1200 | large
-- 2 | 300 | small
-- 3 | 800 | medium
-- 4 | 2500 | large
-- 5 | 150 | small
-- 6 | NULL | small
Kijk naar de laatste rij. Bestelling 6 heeft geen totaal, maar is wel ‘klein’. Beide vergelijkingen met NULL waren niet waar, dus ging het niet door naar ELSE. In de NULL-sectie laten we zien hoe u dit kunt oplossen. Geef het resultaat altijd een naam met behulp van AS, anders krijgt u mogelijk een lastige kolomnaam.
Eenvoudig GEVAL
Wanneer u één kolom met vaste waarden vergelijkt, leest de kortere vorm beter:
SELECT id,
CASE status
WHEN 'paid' THEN 'Complete'
WHEN 'shipped' THEN 'Complete'
WHEN 'pending' THEN 'Waiting'
END AS label
FROM orders;
-- 1 | Complete
-- 2 | Waiting
-- 3 | Complete
-- 4 | Complete
-- 5 | NULL
-- 6 | Waiting
| Vorm | Vergelijkt | Kan bereiken worden gebruikt? | Beste voor |
|---|---|---|---|
| Eenvoudig | Eén uitdrukking voor gelijkheid | Nee | Codes aan labels toewijzen |
| Gezocht | Eventuele voorwaarde per vestiging | Ja | Bereiken, meerdere kolommen, NULL-controles |
Orde is belangrijk
CASE stopt bij de eerste echte voorwaarde, en dit is de meest voorkomende logische bug. Verwissel de twee voorwaarden uit onze eerdere vraag:
SELECT id, total,
CASE
WHEN total >= 500 THEN 'medium'
WHEN total >= 1000 THEN 'large'
ELSE 'small'
END AS size
FROM orders WHERE id IN (1, 4);
-- 1 | 1200 | medium
-- 4 | 2500 | medium
Nu kan niets ooit ‘groot’ zijn. Een totaal van 2500 is ook minimaal 500, dus de eerste tak wint en de tweede wordt nooit bereikt. Er verschijnt geen fout, alleen verkeerde labels. Voor bereiken plaatst u de meest beperkende voorwaarde eerst, of schrijft u volledige bereiken, zoals total >= 500 AND total < 1000.
Wat gebeurt er zonder ANDERS?
In ons eenvoudige CASE-voorbeeld hierboven werd bestelling 5 geannuleerd en werd dat door geen enkel filiaal afgehandeld, dus het resultaat was NULL. Soms is dat precies wat je wilt, zoals de volgende sectie laat zien. Maar bij het maken van labels is een duidelijke ELSE 'other' meestal beter, omdat hierdoor onverwachte waarden zichtbaar worden in plaats van dat er lege plekken in een rapport achterblijven.
Tip: Alle vertakkingen moeten hetzelfde type retourneren. Het combineren van tekst en cijfers werkt losjes in SQLite, maar strengere databases, zoals PostgreSQL, zullen een foutmelding geven of proberen waarden om te zetten op manieren die je niet bedoelde.
Rapporten in draaistijl met SUM
Dit is een van de nuttigste patronen in de dagelijkse SQL. Door CASE in een aggregatie te plaatsen, worden rijen in kolommen omgezet, met één rij per klant:
SELECT customer,
SUM(CASE WHEN status = 'paid' THEN total ELSE 0 END) AS paid,
SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_orders
FROM orders
GROUP BY customer
ORDER BY customer;
-- Asha | 2000 | 0
-- Ben | 0 | 2
-- Chitra | 0 | 0
-- Dev | 0 | 0
Eén zoekopdracht geeft nu zowel de betaalde omzet als het aantal lopende bestellingen weer, zonder dat er afzonderlijke zoekopdrachten of joins nodig zijn. Het patroon werkt in bijna elke database, in tegenstelling tot de speciale PIVOT syntaxis die slechts enkele bieden. Als GROUP BY nieuw voor je is, lees dan SQL GROUP BY en HAVING.
Voorwaardelijke tellingen
COUNT slaat NULL’s over, dus een CASE zonder ELSE telt alleen de rijen die overeenkomen:
SELECT COUNT(*) AS all_orders,
COUNT(CASE WHEN status = 'paid' THEN 1 END) AS paid_orders,
COUNT(CASE WHEN total >= 1000 THEN 1 END) AS large_orders
FROM orders;
-- 6 | 2 | 2
Let op: als je ELSE 0 binnen een COUNT optelt, wordt elke rij geteld, omdat 0 niet NULL is. Gebruik ELSE 0 bij SUM en laat het weg bij COUNT. PostgreSQL en SQLite ondersteunen ook COUNT(*) FILTER (WHERE ...), wat prettig leest, maar niet overal beschikbaar is.
Groeperen op basis van een CASE
U kunt uw eigen buckets maken en deze vervolgens samenvatten:
SELECT CASE WHEN total >= 1000 THEN 'large' ELSE 'other' END AS bucket,
COUNT(*)
FROM orders
GROUP BY bucket
ORDER BY bucket;
-- large | 2
-- other | 4
Groeperen op alias werkt in SQLite, PostgreSQL en MySQL. SQL Server staat dit niet toe, dus u zou de hele expressie moeten herhalen, of de query eerst in een CTE of subquery moeten plaatsen.
Aangepaste sortering met ORDER BY
Alfabetische volgorde is zelden wat een bedrijf wil. Met CASE kunt u uw eigen volgorde definiëren:
SELECT id, status FROM orders
ORDER BY CASE status
WHEN 'pending' THEN 1
WHEN 'paid' THEN 2
ELSE 3
END, id;
-- 2 | pending
-- 6 | pending
-- 1 | paid
-- 3 | paid
-- 4 | shipped
-- 5 | cancelled
Openstaande bestellingen komen op de eerste plaats, wat handig is voor een werkwachtrij. De tweede sorteerkolom, id, houdt de rijen binnen elke groep in een voorspelbare volgorde.
CASE in UPDATE
Met CASE kan één instructie verschillende wijzigingen op verschillende rijen toepassen. Hier worden kleine lopende bestellingen gemarkeerd ter beoordeling:
UPDATE orders
SET status = CASE
WHEN status = 'pending' AND total < 500 THEN 'review'
ELSE status
END;
SELECT id, status FROM orders WHERE customer = 'Ben';
-- 2 | review
-- 6 | pending
De ELSE status houdt andere rijen ongewijzigd. Het is gevaarlijk om dit weg te laten, omdat niet-overeenkomende rijen op NULL worden ingesteld. Zonder een WHERE-clausule heeft deze verklaring ook betrekking op elke rij, dus voeg bij grote tabellen een filter toe en overweeg de wijziging in een transactie te verpakken, zodat u het resultaat kunt controleren voordat u een commit uitvoert. Merk ook op dat volgorde 6 niet veranderde, omdat het NULL-totaal niet voldeed aan total < 500.
NULL vallen
NULL veroorzaakt twee afzonderlijke problemen met CASE. Ten eerste vergelijkt de eenvoudige vorm met behulp van gelijkheid, en niets is gelijk aan NULL, zelfs niet aan NULL zelf:
SELECT CASE NULL WHEN NULL THEN 'matched' ELSE 'not matched' END;
-- not matched
Dus CASE col WHEN NULL komt nooit overeen. Gebruik in plaats daarvan het gezochte formulier met IS NULL. Ten tweede, zoals we bij bestelling 6 hebben gezien, glijdt een NULL-waarde voorbij vergelijkingen en belandt in ELSE. De oplossing is om er eerst naar te kijken:
SELECT id,
CASE
WHEN total IS NULL THEN 'unknown'
WHEN total >= 1000 THEN 'large'
ELSE 'other'
END AS size
FROM orders WHERE id IN (1, 2, 6);
-- 1 | large
-- 2 | other
-- 6 | unknown
Bestel 6 krijgt nu een eerlijk label. Onze gids voor SQL NULL-waarden behandelt dit gedrag volledig.
CASE versus andere opties
| Optie | Werkt binnen | Gebruik het wanneer |
|---|---|---|
GEVAL |
Alle grote databases | Je wilt draagbare logica |
COALESCE |
Alle grote databases | Je hebt alleen een fallback nodig voor NULL |
IF() |
MySQL | Een eenvoudige tweerichtingskeuze |
IIF() |
SQL Server, SQLite | Een eenvoudige tweerichtingskeuze |
DECODE() |
Orakel | Oudere Oracle-code |
| Opzoektabel | Allemaal | De mapping is lang of verandert vaak |
Die laatste optie verdient het om over na te denken. Als een CASE uitgroeit tot dertig vertakkingen en in vijf query’s voorkomt, verplaatst u de mapping naar een tabel en voegt daaraan toe. Dan is een wijziging een update van één rij, in plaats van een codewijziging op vijf plaatsen.
Veel voorkomende fouten
- Verkeerde voorwaardevolgorde. Een brede voorwaarde verbergt eerst de smallere voorwaarden.
ENDvergeten. Dit is de meest voorkomende syntaxisfout.- Gebruik
WHEN NULL. Het komt nooit overeen, dus gebruikWHEN col IS NULL. ELSE 0toevoegen binnenCOUNT. Het telt alle rijen.- We laten
ELSEweg in een UPDATE. Het kan waarden met NULL wissen. - Filteren op CASE in
WHERE. Het kan voorkomen dat een index wordt gebruikt. Zie onze gids voor SQL-queryoptimalisatie.
Tot slot
CASE WHEN is een kleine functie die veel werk doet. Onthoud drie regels: de eerste echte tak wint, ongeëvenaarde rijen worden NULL zonder een ELSE, en NULL heeft zijn eigen controle nodig. Om te oefenen kunt u een rapport nemen dat u momenteel met meerdere query’s maakt, en proberen dit als één query te produceren met behulp van SUM(CASE ...).
Veelgestelde vragen
Wat doet CASE WHEN in SQL?
Het voegt als-dan-logica toe aan een query. SQL controleert elke voorwaarde op volgorde en retourneert de waarde van de eerste voorwaarde die waar is, of de ELSE-waarde als er geen is.
Wat gebeurt er als er geen ELSE in een CASE-instructie staat?
Rijen die aan geen enkele voorwaarde voldoen, retourneren NULL. Dit is handig binnen COUNT, maar in labels en updates kan het blanco’s of gegevensverlies veroorzaken.
Kan ik CASE gebruiken in een WHERE-clausule?
Ja, omdat het een uitdrukking is. Eenvoudige AND- en OR-voorwaarden zijn echter meestal duidelijker en maken vaker gebruik van een index.
Wat is het verschil tussen eenvoudige en doorzochte CASE?
Simple CASE vergelijkt één expressie met vaste waarden voor gelijkheid. Searched CASE heeft een volledige voorwaarde in elke WHEN, zodat het bereik en NULL-controles kan verwerken.
Kunnen CASE-instructies worden genest?
Ja, een CASE kan in een andere verschijnen. Diep nesten wordt echter moeilijk leesbaar, dus overweeg om voorwaarden te combineren met AND of een opzoektabel te gebruiken.
Blijf leren
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.
Meer handleidingen over testen, AI en moderne ontwikkeling
Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.
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 →DevOpsOmgevingsvariabelen 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 →SoftwareontwikkelingAPI-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 →TestautomatiseringSpotten 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 →SoftwaretestenCodedekking 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 & SQLDELETE 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 & SQLSQL-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 →SoftwareontwikkelingTypeScript-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 →SoftwareontwikkelingPython *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 →SoftwareontwikkelingPython 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 intelligentieWat 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 →DevOpsMonitoring 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 →DevOpsDocker-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 →TestautomatiseringTDD 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 →SoftwaretestenGebruikersacceptatietesten (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 & SQLSQL 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 & SQLSQL 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 →SoftwareontwikkelingWat 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 →SoftwareontwikkelingJavaScript-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 →SoftwareontwikkelingPython-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 intelligentieWat 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 →DevOpsImplementatie 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 →TestautomatiseringSchilferige 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 →SoftwaretestenBelastingtesten 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 →SoftwaretestenTestcase 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 & SQLOptimalisatie 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 & SQLSQL 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 →SoftwareontwikkelingJavaScript 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 →SoftwareontwikkelingPython-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 →SoftwareontwikkelingPython-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 intelligentieWat 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 →DevOpsLinux-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 →TestautomatiseringSelenium 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 →SoftwaretestenEquivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden
Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…
Lees artikel →SoftwaretestenErnst 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 & SQLTutorial 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 & SQLSQL-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 →SoftwareontwikkelingGit 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 →SoftwareontwikkelingPython 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 & SQLSQL 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 →