Cours SQL et MySQL · Module 2: Interroger les données (SELECT)
La Salle du Catalogue - résumé
Dans cette leçon5
Bien joué ! Tu quittes la Salle du Catalogue en véritable scribe. Tes requêtes ne se contentent plus de récupérer les données - elles les façonnent.
Ce que tu as appris
- Choisir les colonnes - ne prends que les champs nécessaires au lieu de
*. L'ordre de la liste SELECT décide de l'ordre dans le résultat. - Les alias (AS) -
SELECT tytul AS Tytuldonne à un champ une jolie étiquette dans la réponse. - DISTINCT -
SELECT DISTINCT kraj FROM autorzyne renvoie que des valeurs uniques. - ORDER BY -
ASC(croissant, par défaut) etDESC(décroissant) ; tu peux trier selon plusieurs champs :ORDER BY rok_wydania DESC, tytul ASC. - LIMIT et OFFSET -
LIMIT 5prend cinq lignes ;LIMIT 5 OFFSET 10pagine les résultats.
Une carte des décisions
Quand un lecteur arrive avec une demande, découpe-la en questions simples. Chacune a sa place dans la requête :
| La question du lecteur | Ce que tu écris dans la requête |
|---|---|
| Quels champs ? | une liste de colonnes après SELECT |
| Quels en-têtes ? | AS |
| Sans répétitions ? | DISTINCT juste après SELECT |
| Dans quel ordre ? | ORDER BY avec ASC ou DESC |
| Combien de lignes, quelle page ? | LIMIT et OFFSET |
Les trois premières réponses vont dans la partie SELECT, les deux dernières tout à la fin de la requête. Si la demande ne contient pas l'une de ces questions, tu omets simplement la clause.
Un sortilège magistral
Tout réuni dans un seul parchemin - des champs avec en-têtes, un tri et une limite :
1SELECT tytul AS Tytul, cena AS Cena
2FROM ksiazki
3ORDER BY cena DESC
4LIMIT 3;« Montre les trois livres les plus chers, avec de jolis en-têtes Tytul et Cena » :
| Tytul | Cena |
|---|---|
| Elementy | 89.00 |
| Polityka | 61.20 |
| Etyka | 58.00 |
Magnifique, n'est-ce pas ? Et le rayon contient toujours dix-sept parchemins avec les noms de champs d'origine - seule la réponse a changé.
Cinq pièges de cette salle
Voici les erreurs que je vois le plus souvent chez les jeunes scribes. Chacune se corrige simplement :
- Une virgule oubliée entre les champs.
SELECT tytul cenarenvoie une seule colonne avec l'alias « cena ». Correct :SELECT tytul, cena. - LIMIT avant ORDER BY.
... LIMIT 3 ORDER BY cena DESCest une erreur de syntaxe. Correct :... ORDER BY cena DESC LIMIT 3. - DESC sur le mauvais champ. Dans
ORDER BY rok_wydania, tytul DESC, seul le titre décroît. Si l'année doit décroître, écrisORDER BY rok_wydania DESC, tytul. - Des nombres inversés dans LIMIT et OFFSET.
LIMIT 10 OFFSET 5affiche dix lignes à partir de la sixième. La troisième page de cinq entrées, c'estLIMIT 5 OFFSET 10. - Un alias avec une espace, sans guillemets.
AS Rok wydaniase termine par une erreur. Correct :AS "Rok wydania".
Quand l'éditeur n'accepte pas ta solution, parcours cette liste depuis le début. Le plus souvent, l'une de ces cinq erreurs est en cause, et la corriger prend un instant.
Et ensuite ?
Dans le prochain lieu, tu apprendras à filtrer les parchemins avec la clause WHERE - pour ne retenir que ceux qui remplissent une condition (par exemple des livres à moins de 30, ou publiés après l'an 2000). WHERE se placera juste après FROM, avant ORDER BY. En voici un avant-goût - les livres à moins de 30, du moins cher au plus cher :
1SELECT tytul, cena
2FROM ksiazki
3WHERE cena < 30
4ORDER BY cena ASC;Cette fois, ce n'est pas un champ qui disparaît, mais des lignes entières. Seuls restent les parchemins dont le prix remplit la condition :
| tytul | cena |
|---|---|
| Ajaks | 18.50 |
| Antygona | 19.90 |
| Medea | 21.00 |
| Dziady | 24.50 |
| Hamlet | 27.00 |
| Uczta | 29.99 |
Je te montrerai comment construire ces conditions dans la prochaine salle. Le catalogue est prêt ; il est temps d'apprendre à chercher avec précision. En avant !
Tu as repéré une erreur dans cette leçon ?