Projection de colonnes et pièges liés aux alias
Pourquoi vous ne pouvez pas référencer un alias de SELECT dans WHERE et comment les recruteurs testent la portée des alias
Projection de colonnes et pièges liés aux alias est une leçon SQL Interview Prep gratuite sur CoddyKit. Ceci est la leçon 1 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.
Projection : choisir ses colonnes
Le choix des colonnes renvoyées par une requête s’appelle la projection — c’est ce que vous faites chaque fois que vous écrivez SELECT. Indiquez-les explicitement dans le code réel et gardez SELECT * pour une exploration rapide.
SELECT id, first_name, email
FROM employees;Pourquoi les recruteurs n’aiment pas SELECT *
Pourquoi les recruteurs n’aiment-ils pas SELECT * dans le code d’une application ? C’est fragile — l’ordre des colonnes peut changer —, cela gaspille de la bande passante, nuit à l’utilisation des index et masque ce dont vous avez réellement besoin. Indiquez vos colonnes. 👍
Donner un alias à une colonne avec AS
Un alias renomme une colonne dans votre résultat. Utilisez AS pour plus de clarté : c’est particulièrement utile pour les colonnes calculées, en donnant un en-tête clair et lisible à des expressions peu pratiques comme salaire * 12.
SELECT first_name AS name,
salary * 12 AS annual_salary
FROM employees;Mettre entre guillemets les alias contenant des espaces
Si un alias contient des espaces ou un mot réservé, vous devez le mettre entre guillemets. La méthode portable et standard consiste à utiliser des guillemets doubles. Conseil : utilisez simplement des noms composés de mots séparés par des traits de soulignement et évitez complètement les guillemets.
SELECT salary AS "Annual Pay"
FROM employees;Le grand piège : la portée de l’alias dans WHERE
Voici le piège le plus fréquemment évalué : définissez un alias dans SELECT, puis filtrez dessus dans WHERE, et cela échoue. WHERE s’exécute avant SELECT, donc cet alias n’existe pas encore.
-- This raises an error
SELECT salary * 12 AS annual_salary
FROM employees
WHERE annual_salary > 100000;La raison : l’ordre d’exécution logique
La solution consiste à connaître l’ordre logique des clauses : FROM, WHERE, GROUP BY, HAVING, SELECT, puis ORDER BY. SELECT intervient presque à la fin, donc les clauses précédentes ne peuvent pas voir ses alias.
Solution 1 : répéter l’expression
La solution la plus portable est simple : il suffit de répéter l’expression dans WHERE au lieu d’utiliser l’alias. C’est un peu verbeux, mais cela fonctionne dans toutes les bases de données, à chaque fois.
SELECT salary * 12 AS annual_salary
FROM employees
WHERE salary * 12 > 100000;Solution 2 : utiliser une sous-requête ou un CTE
Si répéter une longue expression vous semble peu élégant, calculez-la d’abord dans une sous-requête ou un CTE. L’alias y devient une véritable colonne, et le WHERE extérieur peut donc filtrer dessus.
SELECT *
FROM (
SELECT first_name, salary * 12 AS annual_salary
FROM employees
) t
WHERE annual_salary > 100000;Où les alias sont autorisés : ORDER BY
Bonne nouvelle : ORDER BY peut utiliser un alias de SELECT, car il s’exécute après SELECT. Ainsi, WHERE, GROUP BY et HAVING ne peuvent pas voir les alias, mais ORDER BY le peut.
SELECT first_name, salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;Différences entre les dialectes à mentionner
Il est utile de le mentionner : MySQL autorise assez largement les alias dans GROUP BY et HAVING, tandis que Postgres et SQL Server respectent la norme. Raisonnez selon l’ordre logique, puis signalez l’exception.
Alias de table et alias de colonne
Ne les confondez pas. Un alias de table abrège le nom d’une table et est visible partout, même dans WHERE. Un alias de colonne renomme la sortie et ne l’est pas : c’est exactement l’inverse.
SELECT e.first_name, e.salary AS pay
FROM employees AS e
WHERE e.salary > 50000;Vérification rapide
Testez le piège fondamental.
Récapitulatif
Récapitulatif : préférez les colonnes explicites à SELECT *, et utilisez AS pour créer des alias. Un alias de SELECT est invisible dans WHERE/GROUP BY/HAVING, mais fonctionne dans ORDER BY. Pour corriger le problème, répétez l’expression ou utilisez un CTE.
Questions Fréquemment Posées
La leçon « Projection de colonnes et pièges liés aux alias » est-elle gratuite ?
Oui — le texte complet de « Projection de colonnes et pièges liés aux alias » 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 « Projection de colonnes et pièges liés aux alias » ?
Pourquoi vous ne pouvez pas référencer un alias de SELECT dans WHERE et comment les recruteurs testent la portée des alias 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 1 sur 4.
Combien de temps prend la leçon « Projection de colonnes et pièges liés aux alias » ?
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
- Projection de colonnes et pièges liés aux alias
- Colonnes calculées et priorité des expressions
- DISTINCT ou GROUP BY pour l’unicité
- Expressions CASE dans SELECT