Partie I
SQL de base
114
© Éditions Eyrolles
Opérateurs ensemblistes
Une des forces du modèle relationnel repose sur le fait qu’il est fondé sur une base mathématique (théorie des ensembles). Le langage SQL devrait programmer les opérations binaires
(entre deux tables) suivantes :
q
intersection qui extrait des données présentes simultanément dans les deux tables ;
q
union par les opérateurs UNION et UNION ALL qui fusionnent des données des deux
tables ;
q
différence qui extrait des données présentes dans une table sans être présentes dans la
deuxième table ;
q
produit cartésien par le fait de disposer de deux tables dans la clause FROM, ce qui permet
de composer des combinaisons à partir des données des deux tables.
Restrictions
Seules des colonnes de même type (CHAR, VARCHAR, DATE, numériques, etc.) doivent être
comparées avec des opérateurs ensemblistes.
L’intersection et la différence ne sont pas encore disponibles sous MySQL. La différence se
programme à l’aide de DISTINCT et NOT IN, l’intersection à l’aide de DISTINCT et IN.
Attention, pour les colonnes CHAR, à veiller à ce que la taille soit identique entre les deux
tables pour que la comparaison fonctionnne. Le nom des colonnes n’a pas d’importance. Il est
possible de comparer plusieurs colonnes de deux tables.
GROUP BY et
HAVING
Compagnies (et nombre de leurs pilotes) ayant plus d’un pilote.
SELECT compa, COUNT(brevet) FROM Pilote
;
+-------+---------------+
| compa | COUNT(brevet) |
+-------+---------------+
| AF
|
3 |
| SING |
2 |
+-------+---------------+
Tableau 4-27 Exemples de fonctions de groupe avec GROUP BY (suite)
Fonction
Exemples
GROUP BY(compa)
HAVING COUNT(brevet)>=2
SQL de base
114
© Éditions Eyrolles
Opérateurs ensemblistes
Une des forces du modèle relationnel repose sur le fait qu’il est fondé sur une base mathématique (théorie des ensembles). Le langage SQL devrait programmer les opérations binaires
(entre deux tables) suivantes :
q
intersection qui extrait des données présentes simultanément dans les deux tables ;
q
union par les opérateurs UNION et UNION ALL qui fusionnent des données des deux
tables ;
q
différence qui extrait des données présentes dans une table sans être présentes dans la
deuxième table ;
q
produit cartésien par le fait de disposer de deux tables dans la clause FROM, ce qui permet
de composer des combinaisons à partir des données des deux tables.
Restrictions
Seules des colonnes de même type (CHAR, VARCHAR, DATE, numériques, etc.) doivent être
comparées avec des opérateurs ensemblistes.
L’intersection et la différence ne sont pas encore disponibles sous MySQL. La différence se
programme à l’aide de DISTINCT et NOT IN, l’intersection à l’aide de DISTINCT et IN.
Attention, pour les colonnes CHAR, à veiller à ce que la taille soit identique entre les deux
tables pour que la comparaison fonctionnne. Le nom des colonnes n’a pas d’importance. Il est
possible de comparer plusieurs colonnes de deux tables.
GROUP BY et
HAVING
Compagnies (et nombre de leurs pilotes) ayant plus d’un pilote.
SELECT compa, COUNT(brevet) FROM Pilote
;
+-------+---------------+
| compa | COUNT(brevet) |
+-------+---------------+
| AF
|
3 |
| SING |
2 |
+-------+---------------+
Tableau 4-27 Exemples de fonctions de groupe avec GROUP BY (suite)
Fonction
Exemples
GROUP BY(compa)
HAVING COUNT(brevet)>=2
