Voorbereiding op programmeerinterviews · Les

Logische uitvoeringsvolgorde van query's

Waarom FROM vóór SELECT wordt uitgevoerd en hoe de echte uitvoeringsvolgorde een dozijn strikvragen beantwoordt

Les 2 van 413 stappen

Logische uitvoeringsvolgorde van query's is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 2 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 Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.

De vraag die een dozijn andere ontsluit

Interviewers vragen "In welke volgorde wordt een query werkelijk uitgevoerd?" omdat dit zoveel verklaart: waarom een SELECT-alias in WHERE mislukt, waarom WHERE niet op een aggregaat kan filteren en nog veel meer.

Geschreven volgorde versus logische volgorde

Je schrijft een query met SELECT als begin, maar de databasemotor voert deze uit met FROM als begin. Die afwijking, waarbij SELECT bijna als laatste wordt geëvalueerd, veroorzaakt de meeste verwarring.

De volledige logische volgorde

De volledige logische volgorde is: FROM, daarna WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY en ten slotte LIMIT. Elke valkuil hieronder volgt rechtstreeks uit deze lijst.

Waarom FROM als eerste wordt uitgevoerd

FROM wordt als eerste uitgevoerd omdat de databasemotor eerst rijen nodig heeft om op te werken. De motor stelt de bronrijen samen en pas daarna kan WHERE bepalen welke rijen behouden blijven.

SELECT e.name, d.name AS dept
FROM employees e
JOIN departments d ON d.id = e.department_id
WHERE e.salary > 50000;

Valkuil: alias niet bruikbaar in WHERE

Het vaakst genoemde gevolg: een SELECT-alias kan niet in WHERE worden gebruikt, omdat WHERE vóór SELECT wordt uitgevoerd. De code hieronder laat de fout en de oplossing zien: herhaal de expressie.

-- FAILS: alias 'annual' unknown in WHERE
SELECT salary * 12 AS annual
FROM employees
WHERE annual > 600000;

-- FIX: repeat the expression
SELECT salary * 12 AS annual
FROM employees
WHERE salary * 12 > 600000;

Valkuil: WHERE kan aggregaten niet zien

WHERE wordt vóór het groeperen uitgevoerd en kan dus geen aggregaten zien, zoals COUNT(). Daarvoor is HAVING: WHERE filtert rijen en HAVING filtert groepen na de aggregatie.

-- WHERE cannot use COUNT(*)
SELECT department, COUNT(*) AS headcount
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

Waarom ORDER BY aliassen kan gebruiken

Het spiegelbeeld: ORDER BY wordt na SELECT uitgevoerd en kan daarom wel SELECT-aliassen gebruiken. Dezelfde alias, een ander moment van uitvoeren: daarom werkt het hier wel en in WHERE niet.

SELECT name, salary * 12 AS annual
FROM employees
ORDER BY annual DESC;

Waar DISTINCT past

DISTINCT wordt na SELECT maar vóór ORDER BY uitgevoerd. Omdat DISTINCT de uitvoerkolommen ontdubbelt, kun je alleen sorteren op iets dat in de SELECT-lijst is overgebleven.

-- ERROR in many engines:
-- ORDER BY column not in the DISTINCT select list
SELECT DISTINCT department
FROM employees
ORDER BY hire_date;

Uitgewerkte analyse van een volledige query

Laten we een echte query stap voor stap volgen: FROM leest de rijen, WHERE filtert, GROUP BY verdeelt ze in groepen, HAVING behoudt groepen, SELECT berekent, ORDER BY sorteert en LIMIT snijdt de resultaten af.

SELECT customer_id, SUM(amount) AS total
FROM orders
WHERE status = 'paid'
GROUP BY customer_id
HAVING SUM(amount) > 1000
ORDER BY total DESC
LIMIT 10;

Logische versus fysieke uitvoering

Een nuance die indruk maakt: dit is de logische volgorde die de correctheid bepaalt. Het fysieke plan van de optimalisator kan hiervan afwijken, zolang het dezelfde rijen oplevert.

Een geheugensteuntje voor de volgorde

Een geheugensteuntje: stel je rijen voor die door een pijplijn naar beneden stromen, waarbij elke stap een kleinere verzameling aan de volgende doorgeeft. Als iets mislukt, controleer dan of een eerdere stap heeft opgeleverd wat de volgende stap nodig heeft.

Korte toets

Pas de uitvoeringsvolgorde toe om de fout te vinden.

Samenvatting

Samenvatting: de logische volgorde is FROM, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, LIMIT. WHERE wordt vóór SELECT uitgevoerd, dus aliassen werken daar niet; ORDER BY wordt erna uitgevoerd, dus daar werken aliassen wel.

Gratis beginnen

Leer Voorbereiding op programmeerinterviews 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
90
Lessen
360

Veelgestelde vragen

Is de les “Logische uitvoeringsvolgorde van query's” gratis?

Ja — de volledige tekst van “Logische uitvoeringsvolgorde van query's” 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 Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.

Wat leer ik in “Logische uitvoeringsvolgorde van query's”?

Waarom FROM vóór SELECT wordt uitgevoerd en hoe de echte uitvoeringsvolgorde een dozijn strikvragen beantwoordt Je oefent met Voorbereiding op programmeerinterviews 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 Voorbereiding op programmeerinterviews te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews 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 2 van 4.

Hoe lang duurt de les “Logische uitvoeringsvolgorde van query's”?

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 Voorbereiding op programmeerinterviews?

Ja. Elke les over Voorbereiding op programmeerinterviews 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

  1. Wat is SQL en waarom vragen interviewers ernaar
  2. Logische uitvoeringsvolgorde van query's
  3. Primary keys, foreign keys en constraints
  4. Onder tijdsdruk een schema lezen
← Terug naar Voorbereiding op programmeerinterviews