Licence L2 S4 2020/2021
Laboratoire
SQL MDL :
Extraction de données de plusieurs
tables
(JOINTURE)
20‐mars‐22 Les Bases de Données H. Meziane 1
Extraction de données de plusieurs tables (JOINTURE)
Les jointures permettent d’extraire des données issues de
plusieurs tables. Le processus de normalisation du modèle
relationnel est basé sur la décomposition et a pour conséquence
d’augmenter le nombre de tables d’un schéma. Ainsi, la majorité
des requêtes utilisent des jointures nécessaires pour pouvoir
extraire des données de tables distinctes.
Une jointure met en relation deux tables sur la base d’une clause
de jointure (comparaison de colonnes). Généralement, cette
comparaison fait intervenir une clé étrangère d’une table avec une
clé primaire d’une autre table (car le modèle relationnel est
fondamentalement basé sur les valeurs).
20/03/2022 Les Bases de données H. Meziane 2
Exemple : Deux tables à mettre en jointure
Comp Nrue Rue ville Nomcomp Compagnie
AA 18 Dar El Beida Alger Air Algérie
SING 7 Camparols Singapour Singapore AL
CAST 1 G. Brassens Blagnac Castanet AL
Brevet = ChefPil
Pilote brevet nom nbHVol compa ChefPil
PL-1 Amine 450 AA PL‐4
PL-2 Mohamed 900 AA PL‐4
PL-3 Laroche 1000 SING
PL-4 Albarik 3400 AA
Comp = Compa
20/03/2022 Les Bases de données H. Meziane 3
Jointure : Syntaxe
La forme la plus courante de la jointure est la jointure dite
«relationnelle» caractérisée par une seule clause FROM
contenant les tables et alias à mettre en jointure deux à deux. La
syntaxe générale suivante décrit une jointure relationnelle :
SELECT [alias1.]Col1, [alias1.]Col2…
FROM nomTable1[alias1], nomTable2[alias2]
WHERE (conditionDejointure)
Remarque :
Afin d’éviter les ambiguïtés concernant le nom des colonnes, on
utilise en général des alias de tables pour suffixer les tables dans la
clause FROM et préfixer les colonnes dans les clauses SELECT et
WHERE.
20/03/2022 Les Bases de données H. Meziane 4
Types de jointures
En fonction de la nature de l’opérateur utilisé dans la requête, de
la clause de jointure et des tables concernées, on distingue :
• L’équijointure (equi join) est la plus connue, elle utilise l’opérateur
d’égalité dans la clause de jointure. La jointure naturelle est
conditionnée en plus par le nom des colonnes.
• L’autojointure (self join) est un cas particulier de l’équijointure, qui
met en œuvre deux fois la même table (des alias de tables
permettront de distinguer les enregistrements entre eux).
• L’inéquijointure fait intervenir tout type d’opérateur :
(<>, >, <, >=, <=, BETWEEN,LIKE, IN)
20/03/2022 Les Bases de données H. Meziane 5
Équijointure
Equijointure utilise l’opérateur d’égalité dans la clause de jointure et
compare généralement des clés primaires avec des clés étrangères.
Comp Nrue Rue ville Nomcomp Compagnie
AA 18 Dar El Beida Alger Air Algérie
SING 7 Camparols Singapour Singapore AL
CAST 1 G. Brassens Blagnac Castanet AL
Pilote brevet nom nbHVol compa ChefPil
PL-1 Amine 450 AA PL‐4
PL-2 Mohamed 900 AA PL‐4
PL-3 Laroche 1000 SING
PL-4 Albarik 3400 AA
20/03/2022 Les Bases de données H. Meziane 6
Équijointure : Exemple
Requête 1 : l’identité des pilotes de la compagnie de nom 'Air
Algérie' ayant plus de 500 heures de vol.
SELECT brevet, nom SELECT [Link], [Link]
FROM Pilote, Compagnie FROM Pilote as P, Compagnie as C
Where nomComp = ‘Air Algérie’ And Where [Link] = ‘Air Algérie'
nbHVol > 50 And AND [Link] > 500
Compa= comp ou ; And [Link]= [Link] ;
[Link]= [Link] ;
ou
Brevet Nom
PL-2 Mohamed
PL-4 Albarik
20/03/2022 Les Bases de données H. Meziane 7
Autojointure
Autojointure est un cas particulier de l’équijointure, elle relie une
table à elle‐même.
Requête 3 : l’identité des pilotes placés sous la responsabilité des
pilotes de nom 'Albarik‘ ;
SELECT [Link], [Link]
FROM Pilote p1, Pilote p2
Where [Link] LIKE '%Albarik% ou [Link]=‘Albarik ’
And [Link]= [Link] ;
Pilote
brevet nom nbHVol compa ChefPil
brevet nom PL-1 Amine 450 AA PL‐4
PL-2 Mohamed 900 AA PL‐4
PL-1 Amine SING
PL-3 Laroche 1000
PL-2 Mohamed PL-4 Albarik 3400 AA
20/03/2022 Les Bases de données H. Meziane 8
Inéquijointure
Requête 5 : les pilotes ayant plus d’expérience que le pilote de
numéro de brevet 'PL‐2'.
SELECT [Link], [Link],[Link], [Link] "Référence"
FROM Pilote p1, Pilote p2
WHERE [Link] = 'PL‐2';
And [Link] > [Link];
Pilote
brevet nom nbHVol compa ChefPil
brevet nom nbHVol Référence
PL-1 Amine 450 AA PL‐4
PL-3 Laroche 1000 900
PL-2 Mohamed 900 AA PL‐4
PL-4 Albarik 3400 900
PL-3 Laroche 1000 SING
PL-4 Albarik 3400 AA
20/03/2022 Les Bases de données H. Meziane 9
Équijointure : autre Exemple
Requête 2 : les coordonnées des compagnies qui embauchent
des pilotes de moins de 500 heures de vol.
SELECT [Link], [Link], [Link], [Link]
FROM Pilote P, Compagnie C
Where [Link]< 500
AND [Link]= [Link] ;
Comp Nrue Rue ville Nomcomp
AA 18 Dar El Beida Alger Air Algérie
20/03/2022 Les Bases de données H. Meziane 10