SQL voor wie geen programmeur is
SQL is de taal waarin je database antwoordt, PostgreSQL een database die ze spreekt. De basis in vier woorden, en waarom het verschil ertoe doet.
SQL klinkt als iets voor de IT-afdeling. Toch is het de taal waarin bijna elke bedrijfsdatabase antwoord geeft, ook die achter je ERP, je kassa en je webshop. En de basis is kleiner dan je denkt.
Je hoeft het niet zelf te schrijven. Maar wie een beetje leest wat er gevraagd wordt, begrijpt ook beter wat er in een rapport gebeurt, en waar het kan misgaan.
Wat SQL is
SQL is een taal om vragen te stellen aan een database. Geen programma, geen product. Een manier van vragen.
Een database is in de kern een verzameling tabellen: een tabel met klanten, een met facturen, een met artikelen. Elke rij is één ding, elke kolom één eigenschap. SQL vertelt de database welke rijen en kolommen je wil zien, en hoe.
De vier woorden die je nodig hebt
Het overgrote deel van de vragen gebruikt maar vier woorden.
SELECT zegt welke kolommen je wil zien. FROM zegt uit welke tabel. WHERE zegt welke rijen. GROUP BY zegt hoe je optelt.
Een voorbeeld: de omzet per klant in 2026.
SELECT klant, SUM(bedrag) FROM facturen WHERE jaar = 2026 GROUP BY klant
Lees het gewoon als een zin. Toon de klant en de som van het bedrag, uit de facturen, alleen van 2026, per klant. Meer is het niet.
Het vijfde woord: JOIN
Het interessante begint als je twee tabellen samenbrengt. Je facturen weten welk klantnummer erbij hoort, maar niet in welke regio die klant zit. Die informatie staat in de klantentabel.
JOIN legt die twee tabellen naast elkaar op basis van wat ze gemeen hebben, meestal een nummer. Dan kan je omzet per regio vragen, terwijl de regio nergens op de factuur staat.
Hier zit ook waar het meestal misloopt. Koppel je op iets dat niet uniek is, zoals een klantnaam, dan vallen er stilletjes rijen weg of tellen ze dubbel. De vraag geeft gewoon een antwoord, alleen een fout. Dat is hetzelfde probleem als in het artikel over het datamodel, en het is waarom een uniek nummer per klant zoveel waard is.
Wat PostgreSQL dan is
Hier komt de verwarring meestal vandaan. SQL is de taal. PostgreSQL is een database die die taal spreekt, net als SQL Server van Microsoft, MySQL en een reeks andere.
Vergelijk het met Nederlands en Vlaams. Iedereen verstaat elkaar, de basis is dezelfde, maar er zijn woorden en uitdrukkingen die per streek verschillen. De vier woorden hierboven werken overal. De details niet altijd: de eerste tien rijen opvragen schrijf je in SQL Server anders dan in PostgreSQL.
Wie "gewoon SQL" zegt, bedoelt meestal een van twee dingen: de taal zelf, of SQL Server, omdat dat in veel Microsoft-omgevingen de standaard is.
Waarom ik met PostgreSQL werk
Drie redenen, en geen daarvan is dat de andere slecht zijn.
Het is open source. Je betaalt geen licentie voor de database zelf, alleen voor de plek waar ze draait. Voor het volume van een kmo is dat een groot verschil.
Het is overal te krijgen. Er zijn tientallen aanbieders die het voor je hosten, waaronder Neon, dat ik zelf gebruik. Je zit niet vast aan één leverancier.
En het gaat goed om met JSON, het formaat waarin de meeste API's hun gegevens teruggeven. Dat maakt het makkelijk om data uit een CRM of ERP eerst ruw op te slaan en ze pas daarna in tabellen te gieten.
SQL Server is een uitstekende keuze als je al diep in de Microsoft-wereld zit en er de licentie voor hebt. Power BI werkt met allebei even goed.
Wat je hier als zaakvoerder aan hebt
Je hoeft geen query's te schrijven. Wel helpt het om te weten dat elk cijfer in je rapport ooit een vraag was in deze taal, met een WHERE die bepaalt wat meetelt en een JOIN die bepaalt wat aan wat hangt.
Klopt een cijfer niet, dan zit de fout bijna altijd in een van die twee. En met een beetje SQL kan je zelf nakijken of de omzet in de database dezelfde is als die in je rapport. Dat is de controle waar het vorige artikel over ging.
De stelling
SQL is geen programmeertaal voor specialisten. Het is de taal waarin je data antwoordt, en wie de vier basiswoorden kan lezen, ziet ook waar een rapport de verkeerde vraag stelt.