Cours SQL et MySQL · Module 10: Transactions et SQL avancé
Les CTE (WITH) - des requêtes claires
Dans cette leçon3
Quand une requête devient longue et imbriquée, il est facile de s'y perdre. Une CTE (Common Table Expression) vient à la rescousse - une façon de nommer un résultat temporaire avant de l'utiliser davantage.
La syntaxe WITH
Une CTE commence par le mot-clé WITH :
1WITH drogie_ksiazki AS (
2 SELECT tytul, cena FROM ksiazki WHERE cena > 50
3)
4SELECT * FROM drogie_ksiazki;Nous créons un « rayon » temporaire nommé drogie_ksiazki, puis nous nous y référons dans la requête principale - comme s'il s'agissait d'une table ordinaire. Une fois la requête exécutée, la CTE disparaît.
Pourquoi est-ce mieux ?
Compare cela à une sous-requête imbriquée au milieu - une CTE se lit de haut en bas, comme une histoire :
- nous définissons d'abord ce que sont les « livres chers »,
- puis nous les utilisons.
Une CTE n'est pas une vue
- Une vue est sauvegardée dans la base de données de façon permanente (
CREATE VIEW). - Une CTE ne vit que le temps d'une seule requête - c'est la note passagère du Gardien.
Une CTE fonctionne à merveille pour les rapports complexes, où plusieurs étapes s'appuient les unes sur les autres. Grâce à elle, même une requête compliquée reste claire.
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. Par quel mot-clé commence une CTE (expression de table commune) ?
2. En quoi une CTE diffère-t-elle d'une vue ?
Voici 2 des 3 questions de cette leçon. Réponds aux autres dans le jeu.
Tâches pratiques dans le jeu
- Éditeur de code
Écris une CTE nommée drogie_ksiazki qui sélectionne tytul et cena de la table ksiazki pour les lignes où cena > 50. Puis, dans la requête principale, récupère toutes les colonnes de drogie_ksiazki. Utilise la syntaxe WITH drogie_ksiazki AS (SELECT ...) SELECT * FROM drogie_ksiazki;
- Tri vertical
Ordonne les lignes de l'expression CTE dans le bon ordre (de haut en bas) :
- Éditeur de code
Écris une CTE nommée czytelnicy_krakowa qui sélectionne imie et nazwisko de la table czytelnicy pour les lignes où miasto = 'Krakow'. Puis, dans la requête principale, récupère toutes les colonnes de czytelnicy_krakowa. Utilise la syntaxe WITH ... AS (SELECT ...) SELECT * FROM ...