Cours SQL et MySQL · Module 10: Transactions et SQL avancé

Les CTE (WITH) - des requêtes claires

2 min de lecture
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 :

  1. nous définissons d'abord ce que sont les « livres chers »,
  2. 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. 1. Par quel mot-clé commence une CTE (expression de table commune) ?

  2. 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 ...