Cours SQL et MySQL · Module 2: Interroger les données (SELECT)
Les alias de colonnes - donne-lui un joli nom
Dans cette leçon5
Les noms des champs d'un rayon peuvent être techniques : rok_wydania, autor_id. Les scribes les ont écrits pour des scribes - sans espaces et sans lettres polonaises. Un lecteur qui reçoit une liste de prix préférerait voir un en-tête plus agréable. Dans le résultat, nous pouvons renommer les champs - ce nouveau nom est un alias.
Le mot AS
Nous créons des alias avec le mot AS. Il se place juste après le nom du champ, suivi de l'étiquette qui doit apparaître dans l'en-tête :
1SELECT tytul AS Tytul, cena AS Cena FROM ksiazki;Dans la réponse, les en-têtes de colonnes afficheront Tytul et Cena :
| Tytul | Cena |
|---|---|
| Iliada | 39.90 |
| Odyseja | 42.00 |
| Państwo | 55.50 |
| … | … |
Sur le rayon, les champs s'appellent toujours tytul et cena. Un alias ne change que l'étiquette dans le résultat - il ne touche jamais aux données. La requête suivante sans alias affichera de nouveau les en-têtes tytul et cena.
Un alias apparaît exactement comme tu l'écris. Si tu écris AS autor, l'en-tête sera « autor », et non « Autor ». La Bibliothèque ne corrige pas la casse à ta place : écris l'alias tel qu'il doit apparaître dans le rapport.
Alias contenant une espace
Et si l'en-tête devait être « Rok wydania », avec une espace ? Sans guillemets, MySQL lit Rok comme l'alias et bute sur le mot wydania, car à cet endroit il attend une virgule ou FROM. Résultat : une erreur de syntaxe. Voilà pourquoi un alias contenant une espace se met entre guillemets :
1SELECT rok_wydania AS "Rok wydania" FROM ksiazki;L'en-tête est maintenant « Rok wydania », et en dessous se trouvent les mêmes années que dans le champ rok_wydania :
| Rok wydania |
|---|
| 1990 |
| 1990 |
| 2001 |
| … |
MySQL accepte un tel alias entre guillemets doubles, entre apostrophes ou entre accents graves, qui entourent aussi les noms de champs. Choisis une écriture et garde-la dans tout le rapport.
AS est facultatif
MySQL te permet d'omettre le mot AS. Si un second mot suit le nom du champ sans virgule entre eux, MySQL prend ce second mot pour un alias :
1SELECT nazwisko Autor FROM autorzy;Le résultat a l'en-tête « Autor », exactement comme s'il y avait AS :
| Autor |
|---|
| Homer |
| Platon |
| Sofokles |
| … |
Cela fonctionne de la même façon, mais avec AS, le code est plus clair - et c'est ce que je te recommande. On voit tout de suite où finit le champ et où commence l'étiquette.
Un piège : la virgule oubliée
La même règle peut te jouer un tour. Tu voulais deux champs, mais tu as oublié la virgule :
1SELECT tytul cena FROM ksiazki;MySQL ne signale aucune erreur. Il prend cena pour un alias du champ tytul et renvoie une seule colonne :
| cena |
|---|
| Iliada |
| Odyseja |
| Państwo |
| … |
L'en-tête dit « cena », mais on y trouve des titres. Il n'y a aucun prix dans le résultat. Quand la réponse a moins de colonnes que prévu, compte d'abord les virgules.
Pourquoi utiliser des alias ?
- Les en-têtes des rapports deviennent compréhensibles pour tout le monde.
- On peut trier selon un alias. Quand tu connaîtras ORDER BY, tu verras que
ORDER BY Autor, par exemple, fonctionne. - Dans la clause
WHERE, que tu verras dans le lieu suivant, on ne peut pas utiliser d'alias - il faut y donner le vrai nom du champ. - Dans les lieux suivants, tu verras que les alias sont précieux avec les jointures (
JOIN) et les fonctions.
Souviens-toi : un alias est un surnom donné à un champ, le temps d'une seule requête.
Tu as repéré une erreur dans cette leçon ?
Teste tes connaissances
Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.
1. Que fait un alias créé avec le mot AS, par exemple « SELECT tytul AS Tytul FROM ksiazki; » ?
2. Comment donner correctement à une colonne un alias contenant une espace, par exemple Rok wydania ?
Tâches pratiques dans le jeu
- Éditeur de code
Écris une requête qui récupère la colonne nazwisko de la table autorzy et lui donne l'alias Autor (utilise le mot AS).
- Clique dans l'ordre
Clique sur les éléments dans l'ordre où tu écrirais un alias nommé Cena pour la colonne cena :
- Éditeur de code
Écris une requête qui récupère la colonne cena de la table ksiazki et lui donne l'alias Cena (utilise le mot AS).