Les opérateurs ensemblistes en SQL

UNION, UNION ALL, INTERSECT et EXCEPT : combiner les résultats de deux requêtes, compatibilité des colonnes, dédoublonnage et place de l'ORDER BY.

  • 23 cartes
  • 6 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les chiffres
  5. Mises en situation
  6. Comprendre

Quelques cartes du deck

  • UNION : de quoi s'agit-il ?

    Voir la réponse

    Opérateur qui réunit les lignes de deux requêtes en un seul résultat et supprime les doublons.

    Une ligne présente dans les deux résultats n'apparaît qu'une fois. Le moteur doit pour cela comparer les lignes, ce qui a un coût.

  • Les villes de client sont Lyon, Paris, Lyon, Nantes ; celles de magasin sont Lyon, Paris, Lille. Que rend cette requête ?

    ```sql
    SELECT ville FROM client
    INTERSECT
    SELECT ville FROM magasin;
    `

    • Lyon et Paris, chacune une fois
    • Lyon, Paris et Lyon
    • Nantes
    • Lyon, Paris, Nantes et Lille
    Voir la réponse

    Lyon et Paris, chacune une fois

    Seules Lyon et Paris figurent des deux côtés. INTERSECT dédoublonne : le Lyon des clients, présent deux fois, sort une seule fois. Les quatre villes seraient le résultat d'un UNION.

  • Un seul ORDER BY est permis, écrit … de la requête composée : il trie ….

    Voir la réponse

    Un seul ORDER BY est permis, écrit à la fin de la requête composée : il trie le résultat entier.

    SELECT … UNION SELECT … ORDER BY ville trie l'union. Écrit au milieu sans parenthèses, le tri n'a pas de sens : la base le refuse.

  • UNION ALL : de quoi s'agit-il ?

    Voir la réponse

    Opérateur qui réunit les lignes de deux requêtes sans rien supprimer : les doublons sont conservés.

    Il rend autant de lignes que les deux requêtes réunies. Plus rapide, car le moteur ne dédoublonne pas : à préférer quand les doublons sont impossibles ou voulus.