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.
- Notions
- Questions
- Ranger et relier
- Les chiffres
- Mises en situation
- 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;`LyonetParis, chacune une foisLyon,ParisetLyonNantesLyon,Paris,NantesetLille
Voir la réponse
LyonetParis, chacune une foisSeules Lyon et Paris figurent des deux côtés.
INTERSECTdédoublonne : le Lyon des clients, présent deux fois, sort une seule fois. Les quatre villes seraient le résultat d'unUNION.Un seul
ORDER BYest permis, écrit … de la requête composée : il trie ….Voir la réponse
Un seul
ORDER BYest permis, écrit à la fin de la requête composée : il trie le résultat entier.SELECT … UNION SELECT … ORDER BY villetrie 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.