0Pricing
SQL Interview Prep · Leçon

Ordre logique d’exécution d’une requête

Pourquoi FROM s’exécute avant SELECT et comment connaître le véritable ordre d’exécution permet de répondre à une douzaine de questions pièges

Ordre logique d’exécution d’une requête est une leçon SQL Interview Prep gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Interview Prep comprend 4 leçons au total.

La question qui en débloque une douzaine d’autres

Les recruteurs demandent « Dans quel ordre une requête s’exécute-t-elle réellement ? », car cela explique beaucoup de choses : pourquoi un alias de SELECT échoue dans WHERE, pourquoi WHERE ne peut pas filtrer un agrégat, et bien plus encore.

Ordre d’écriture et ordre logique

Vous écrivez une requête en commençant par SELECT, mais le moteur l’exécute en commençant par FROM. Ce décalage, avec SELECT évalué presque en dernier, est à l’origine de la plupart des confusions.

L’ordre logique complet

L’ordre logique complet est le suivant : FROM, puis WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY et enfin LIMIT. Tous les pièges présentés ci-dessous découlent directement de cette liste.

Pourquoi FROM s’exécute en premier

FROM s’exécute en premier, car le moteur a besoin de lignes sur lesquelles travailler avant toute autre chose. Il construit les lignes sources, puis seulement WHERE peut décider lesquelles conserver.

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

Piège : l’alias n’est pas utilisable dans WHERE

La conséquence la plus souvent demandée : un alias de SELECT ne peut pas être utilisé dans WHERE, car WHERE s’exécute avant SELECT. Le code ci-dessous montre l’erreur et la correction : répéter l’expression.

-- 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;

Piège : WHERE ne peut pas voir les agrégats

WHERE s’exécute avant le regroupement et ne peut donc pas voir les agrégats comme COUNT(). C’est le rôle de HAVING : WHERE filtre les lignes et HAVING filtre les groupes après l’agrégation.

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

Pourquoi ORDER BY peut utiliser les alias

Le cas inverse : ORDER BY s’exécute après SELECT et peut donc utiliser les alias de SELECT. Le même alias, mais un moment différent : c’est pourquoi cela fonctionne ici et pas dans WHERE.

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

Où se place DISTINCT

DISTINCT s’exécute après SELECT, mais avant ORDER BY. Comme il élimine les doublons à partir des colonnes de sortie, vous ne pouvez trier que selon une valeur conservée dans la liste de sélection.

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

Suivre l’exécution d’une requête complète

Suivons une vraie requête à travers les différentes étapes : FROM lit les lignes, WHERE les filtre, GROUP BY les répartit en groupes, HAVING conserve certains groupes, SELECT effectue les calculs, ORDER BY trie et LIMIT découpe le résultat.

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;

Exécution logique et physique

Une nuance qui fait bonne impression : il s’agit de l’ordre logique qui définit la justesse du résultat. Le plan physique de l’optimiseur peut être différent, tant qu’il produit les mêmes lignes.

Un moyen mnémotechnique pour retenir l’ordre

Pour retenir cet ordre, imaginez des lignes qui descendent dans une chaîne de traitement, chaque étape transmettant un ensemble plus petit à la suivante. Lorsqu’un élément échoue, vérifiez si une étape précédente a produit ce dont il a besoin.

Vérification rapide

Appliquez l’ordre d’exécution pour repérer l’erreur.

Récapitulatif

Récapitulatif : l’ordre logique est FROM, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, LIMIT. WHERE s’exécute avant SELECT, donc les alias ne sont pas disponibles ; ORDER BY s’exécute après, donc les alias fonctionnent.

Questions Fréquemment Posées

La leçon « Ordre logique d’exécution d’une requête » est-elle gratuite ?

Oui — le texte complet de « Ordre logique d’exécution d’une requête » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Interview Prep, passe à CoddyKit PRO. Le cours SQL Interview Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Ordre logique d’exécution d’une requête » ?

Pourquoi FROM s’exécute avant SELECT et comment connaître le véritable ordre d’exécution permet de répondre à une douzaine de questions pièges Tu pratiques SQL Interview Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer SQL Interview Prep ?

Aucune expérience préalable n'est requise. SQL Interview Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Ordre logique d’exécution d’une requête » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon SQL Interview Prep ?

Oui. Chaque leçon SQL Interview Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Qu’est-ce que SQL et pourquoi les recruteurs le demandent-ils ?
  2. Ordre logique d’exécution d’une requête
  3. Clés primaires, clés étrangères et contraintes
  4. Lire un schéma sous pression
← Retour à SQL Interview Prep