Lycée Carnot PC 2016-2017
1.2.4 Union, différence, intersection
Ces trois opérations ensemblistes correspondent à réaliser l’union/la différence/l’intersection des ensembles
de résultats obtenus.
On note
–R1,R27→ R1∪ R2={t|t∈ R1ou t∈ R2}
–R1,R27→ R1\ R2={t|t∈ R1et t /∈ R2}
–R1,R27→ R1∩ R2={t|t∈ R1et t∈ R2}
En SQL, les mots-clés UNION,MINUS et INTERSECT sont à placer respectivement entre deux requêtes SELECT.
1.2.5 Jointure
C’est la principale opération à connaître : il s’agit de la construction d’une table plus importante en nombre
d’attributs, en croisant plusieurs tables et en ne gardant que les lignes qui ont un « sens », qui vérifient une
propriété reliant les enregistrements des tables jointées. La plupart du temps, la propriété est l’identification
de clés étrangère/primaire. C’est la composition du produit cartésien et de la sélection suivant la propriété.
On note R1,R27→ R1⊲⊳FR2=σF(R1× R2) = {t|t(R1)∈ R1et t(R2)∈ R2et F(t) est vraie}
En SQL, SELECT * FROM table1 JOIN table2 ON condition (WHERE selection)
Très souvent, la condition est du genre table1.champ = table2.id
2 Autres rappels de SQL
2.1 Mots-clés
SELECT (champs|*) FROM table (WHERE condition) ORDER BY champ (ASC|DESC) (LIMIT n)
L’ordre des instructions est obligatoire (JOIN,ON,WHERE,ORDER,LIMIT). Par défaut, l’ordre est descendant.
Dans les conditions, on peut utiliser les mots-clés AND,OR et NOT. Il est possible de rechercher des égalités
sur des chaînes de caractère avec =, mais aussi de rechercher des sous-chaînes de caractères. Il faut alors
remplacer =par l’opérateur LIKE, et utiliser le métacaractère (joker) %.
Le mot-clé DISTINCT placé juste avant un champ de projection permet de supprimer les lignes faisant doublon
sur ce champ.
2.2 Agrégation
L’agrégation de résultats est, après la jointure, le deuxième concept important à connaître : il est possible
de regrouper des enregistrements en un seul. La syntaxe SQL est GROUP BY champ, obligatoirement à la fin
de la requête. Si les valeurs d’un champ sont différentes, l’une d’entre elle sera choisie aléatoirement, ce qui
n’est pas un comportement souhaité.
Il faut donc la plupart du temps utiliser des fonctions d’agrégation, qui vont faire un calcul sur plusieurs
enregistrements :
MIN(),MAX(),AVG(),SUM(),COUNT().
Il est possible d’utiliser une fonction d’agrégation sans , GROUP BY : automatiquement un seul résultat sera
renvoyé.
TP no4 d’Informatique - Bases de données 2/4