Je eerste zinvolle query
What you'll learn
- queries schrijven met een expliciete lijst kolommen na
SELECTen een rijfilter viaWHERE - een bedrijfsvraag vertalen naar SQL via de route: entiteit →
FROM, voorwaarden →WHERE(metAND), uitvoer →SELECT, volgorde →ORDER BY - uitleggen waarom
SELECT *slechte praktijk is in productiequeries - een query controleren door hem hardop na te vertellen: komt je navertelling overeen met de oorspronkelijke vraag, dan klopt de query qua betekenis
De kaart is bestudeerd, en QUERY schakelt naar de volgende modus. Tot nu toe bekeek je het archief als geheel, als een toerist; een archivaris werkt preciezer. Op het holopaneel dooft alles behalve één tabel, en er verschijnt een opdracht: stel je vraag zo dat het antwoord geen enkele overbodige rij en geen enkele overbodige kolom bevat.
We kiezen de juiste kolommen en rijen
Alles met * ophalen is handig voor een eerste verkenning, maar in echt werk is het alsof je het hele magazijn naar de kassa sleept. Meestal heb je concrete velden nodig: som ze na SELECT op, gescheiden door komma's.
Met rijen werkt het net zo: in plaats van de hele etalage te pakken, kies je met WHERE alleen het segment dat je nodig hebt. Laten we «Kotomarket» bijvoorbeeld vragen om alleen de producten uit de categorie Boeken:

Choosing the columns and rows you need
Grabbing everything with * is convenient for a first look, but in real work it’s like hauling the entire warehouse up to the checkout. Usually you need specific fields: list them, comma-separated, after SELECT.
It’s the same with rows: instead of the whole storefront, pick only the segment you need via WHERE. For example, let’s ask Kotomarket for only the products in the Books category:
| name | price |
|---|---|
| SQL для профи | 1290.00 |
| Чистый код | 1490.00 |
| Алгоритмы на практике | 1690.00 |
Van bedrijfsvraag naar query
Echte vragen bereiken de archivaris niet als SQL: «welke boeken zijn goedkoper dan vijftienhonderd?», «welke elektronica is duurder dan 5000?». De vertaling loopt altijd via dezelfde route:
- Entiteit → tabel. Waar gaat de vraag over: producten, kopers, bestellingen? «Boeken goedkoper dan 1500» gaat over producten, dus
FROM products. - Beperkingen → WHERE. Elke voorwaarde uit de vraag wordt een aparte filtervoorwaarde: categorie «Boeken», prijs lager dan 1500.
- Wat te tonen → SELECT. Wat moet er in het antwoord staan? De naam en de prijs — die sommen we op, de rest is ruis.
- Vorm van het antwoord → ORDER BY. «Van goedkoop naar duur» betekent sorteren op prijs.
-- «Welke boeken zijn goedkoper dan 1500 en hoeveel kosten ze, van goedkoop naar duur?»
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1500
ORDER BY price;
Meerdere voorwaarden verbind je met het woord AND; de filteroperatoren behandelen we uitgebreid in het volgende hoofdstuk.
Een goede archivaris heeft ook de omgekeerde gewoonte: lees de afgewerkte query hardop als een zin. «Neem uit de producten de boeken goedkoper dan 1500, toon de naam en de prijs, sorteer op prijs» — komt je navertelling overeen met de oorspronkelijke vraag, dan klopt de query qua betekenis. Hoor je in je navertelling «alle kolommen» of «de hele etalage», ga dan terug en maak de query scherper.
Interview question
Sollicitatievraag: waarom wordt SELECT * als slechte praktijk beschouwd in productiequeries?
Sterk antwoord: ten eerste haal je overbodige data op: netwerk en geheugen gaan naar kolommen die je niet nodig hebt, en de database kan minder vaak alleen via de index antwoorden (index-only scan; indexen — Hoofdstuk 10). Ten tweede maakt het je code breekbaar: als er kolommen worden toegevoegd of hernoemd, kunnen rapporten en code stuklopen die rekenen op de samenstelling en volgorde van de kolommen. Een expliciete lijst kolommen is het contract van de query; SELECT * hoort hooguit thuis bij interactieve dataverkenning.
SELECT name FROM products WHERE category = 'Книги'?The index has been read: you know what’s in the five tables and which threads stitch them together. QUERY dims the map, and the next clearance level lights up on the holopanel — the reading terminal.
QUERY: Remember the cardinal property of this place: the archive answers only well-formed questions. From the next clearance on, we learn to ask precisely.