0% ont trouvé ce document utile (0 vote)
20 vues31 pages

Introduction aux jointures SQL et DDL

Le document présente un cours sur la persistance des données, abordant des concepts tels que le modèle relationnel, SQL, et les jointures. Il explique comment effectuer des jointures entre plusieurs tables pour extraire des données pertinentes. Des exemples pratiques et des exercices sont fournis pour illustrer l'utilisation des jointures en SQL.

Transféré par

Master Larech
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues31 pages

Introduction aux jointures SQL et DDL

Le document présente un cours sur la persistance des données, abordant des concepts tels que le modèle relationnel, SQL, et les jointures. Il explique comment effectuer des jointures entre plusieurs tables pour extraire des données pertinentes. Des exemples pratiques et des exercices sont fournis pour illustrer l'utilisation des jointures en SQL.

Transféré par

Master Larech
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Persistance des données I

DON2

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier, Bruno


Motry, Selim Rexhep, Mathieu Sassolas

Haute École Bruxelles-Brabant


École Supérieure d’Informatique

Année académique 2024 / 2025


Plan du cours
0 – Présentation
1 – Introduction
2 – Le modèle relationnel
3 – SQL : Projection et sélection
4 – SQL : Fonctions agrégatives
5 – SQL : DDL-DML
6 – SQL : Contraintes
7 – SQL : Jointures
8 – Les modèles non relationnels
5 – Jointure
1 Introduction
2 Algèbre relationnelle

3 SQL - Produit cartésien

4 SQL - Jointure

5 SQL - Jointure - Sémantique

6 SQL - Jointure - Exercices

7 SQL - Jointure - Clé étrangère réflexive

8 SQL - Jointure - Clé étrangère nulle


Introduction

Introduction

La jointure permet de produire une table constituée de données extraites


de plusieurs tables :

 
SELECT ncom, dateCom, [Link], nom, localite
FROM commande
JOIN client ON [Link] = [Link]
 

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 4 / 31
Introduction

Rappel - Identifiants et clés étrangères

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 5 / 31
Algèbre relationnelle

Algèbre relationnelle - Introduction

Produit cartésien
Le produit cartésien de A et B est noté A × B

Jointure
La jointure, notée
(A) ./<condition> (B),
est l’ensemble des lignes du produit cartésien qui vérifient la condition.

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 6 / 31
Algèbre relationnelle

Algèbre relationnelle - Produit cartésien

A×B =
a1 a2 a3 b1 b2 b3
10 aaaa 15 33 xxxx 10
10 aaaa 15 15 bbbb 40
10 aaaa 15 41 tttt 40
10 aaaa 15 49 dddd 75
20 bbbb 15 33 xxxx 10
20 bbbb 15 15 bbbb 40
20 bbbb 15 41 tttt 40
20 bbbb 15 49 dddd 75
30 cccc 22 33 xxxx 10
30 cccc 22 15 bbbb 40
30 cccc 22 41 tttt 40
30 cccc 22 49 dddd 75
40 dddd 33 33 xxxx 10
40 dddd 33 15 bbbb 40
40 dddd 33 41 tttt 40
40 dddd 33 49 dddd 75

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 7 / 31
Algèbre relationnelle

Algèbre relationnelle - Jointure

(A) ./a1=b3 (B) =


a1 a2 a3 b1 b2 b3
10 aaaa 15 33 xxxx 10
10 aaaa 15 15 bbbb 40
10 aaaa 15 41 tttt 40
10 aaaa 15 49 dddd 75
20 bbbb 15 33 xxxx 10
20 bbbb 15 15 bbbb 40
20 bbbb 15 41 tttt 40
20 bbbb 15 49 dddd 75
30 cccc 22 33 xxxx 10
30 cccc 22 15 bbbb 40
30 cccc 22 41 tttt 40
30 cccc 22 49 dddd 75
40 dddd 33 33 xxxx 10
40 dddd 33 15 bbbb 40
40 dddd 33 41 tttt 40
40 dddd 33 49 dddd 75

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 8 / 31
Algèbre relationnelle

Algèbre relationnelle - Jointure

(A) ./a1=b3 (B) =


a1 a2 a3 b1 b2 b3
10 aaaa 15 33 xxxx 10
40 dddd 33 15 bbbb 40
40 dddd 33 41 tttt 40

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 9 / 31
Algèbre relationnelle

Algèbre relationnelle - Jointure

(A) ./a16=b3 (B) =


a1 a2 a3 b1 b2 b3
10 aaaa 15 33 xxxx 10
10 aaaa 15 15 bbbb 40
10 aaaa 15 41 tttt 40
10 aaaa 15 49 dddd 75
20 bbbb 15 33 xxxx 10
20 bbbb 15 15 bbbb 40
20 bbbb 15 41 tttt 40
20 bbbb 15 49 dddd 75
30 cccc 22 33 xxxx 10
30 cccc 22 15 bbbb 40
30 cccc 22 41 tttt 40
30 cccc 22 49 dddd 75
40 dddd 33 33 xxxx 10
40 dddd 33 15 bbbb 40
40 dddd 33 41 tttt 40
40 dddd 33 49 dddd 75

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 10 / 31
Algèbre relationnelle

Algèbre relationnelle - Jointure

(A) ./a16=b3 (B) =


a1 a2 a3 b1 b2 b3
10 aaaa 15 15 bbbb 40
10 aaaa 15 41 tttt 40
10 aaaa 15 49 dddd 75
20 bbbb 15 33 xxxx 10
20 bbbb 15 15 bbbb 40
20 bbbb 15 41 tttt 40
20 bbbb 15 49 dddd 75
30 cccc 22 33 xxxx 10
30 cccc 22 15 bbbb 40
30 cccc 22 41 tttt 40
30 cccc 22 49 dddd 75
40 dddd 33 33 xxxx 10
40 dddd 33 49 dddd 75

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 11 / 31
Algèbre relationnelle

Algèbre relationnelle - Exercices

Pour les deux relations suivantes :

calculez :
1 le produit cartésien Client × Commande
2 la jointure
(Client) ./nCli=cli (Commande)

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 12 / 31
SQL - Produit cartésien

SQL - Produit cartésien


 
SELECT ∗ FROM commande,client
 

Pas de condition de jointure

On obtient donc le produit cartésien : chaque ligne de COMMANDE est


couplée avec chaque ligne de CLIENT

La requête est valide mais d’une utilité réduite dans ce cas. Utile
quand on veut combiner toutes les lignes d’une table avec toutes les lignes
d’une autre table.

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 13 / 31
SQL - Jointure

SQL - Jointure

La jointure permet de produire une table constituée de données extraites


de plusieurs tables :

SELECT ncom, datecom, [Link], nom, localite


FROM commande
JOIN client ON [Link] = [Link] ;
Il faut préfixer les noms de colonne s’il y a ambiguïté

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 14 / 31
SQL - Jointure

SQL - Jointures

SELECT liste d’expressions


FROM table1
JOIN table2 ON condition de jointure ;

Une condition de jointure sera souvent de la forme :


Clé étrangère = identifiant primaire de la table référencée. (FK=ID)

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 15 / 31
SQL - Jointure

SQL - Jointures

Exemple :
 
SELECT [Link], nom, datecom, npro
FROM Client
JOIN commande
ON [Link] = [Link]
JOIN Detail
ON [Link] = [Link]
 

Jointure sur 3 tables

Quelle est la sémantique de la requête ?

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 16 / 31
SQL - Jointure

SQL - Jointures

Exemple :
 
SELECT ncom, [Link], nom, datecom, adresse
FROM client
JOIN commande ON [Link] = [Link]
WHERE cat = ’C1’ AND datecom < ’23−12−2009’
 

Condition de jointure
+
condition de sélection

Quelle est la sémantique de la requête ?

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 17 / 31
SQL - Jointure

SQL - Jointures - Lignes célibataires

SELECT localite, [Link], nom, ncom, datecom


FROM client
JOIN commande ON [Link] = [Link] ;

Nous obtenons les clients ayant passé au moins une commande.

Cette requête ignore les lignes de CLIENT qui n’ont pas de lignes
correspondantes dans COMMANDE

Ces lignes de CLIENT n’ayant pas de correspondance dans COMMANDE


sont dites célibataires.

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 18 / 31
SQL - Jointure

SQL - Jointures - Valeurs dérivées

Exemple :
 
SELECT ncom, [Link], qcom∗prix
FROM detail d
JOIN produit p ON [Link] = [Link]
 

d et p sont des alias de table

Quelle est la sémantique de la requête ?

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 19 / 31
SQL - Jointure

SQL - Jointures - Valeurs dérivées

Exemple :
 
SELECT ’Montant commande 30184 = ’, SUM(qcom∗prix)
FROM detail d JOIN produit p
ON [Link] = [Link]
WHERE [Link] = ’30184’
 

jointure + clause WHERE + fonction agrégative

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 20 / 31
SQL - Jointure - Sémantique

SQL - Jointures - Sémantique

 Une ligne de CLIENT représente un client.


 Une ligne de COMMANDE représente une commande.

Que représente chaque ligne de la jointure


(client c) ./[Link]=[Link] (commande m)
SELECT [Link], nom, localite
FROM client c
JOIN commande m ON [Link] = [Link] ;
 un client ?
 un client qui a passé une commande ?
 une commande ?

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 21 / 31
SQL - Jointure - Sémantique

SQL - Jointures - Sémantique

(client c) ./[Link]=[Link] (commande m)


SELECT [Link], nom, localite
FROM client c
JOIN commande m ON [Link] = [Link] ;
Autre formulation : il y a autant de lignes dans le résultat qu’il y a
 de clients ?
 de clients qui ont passé des commandes ?
 de commandes ?

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 22 / 31
SQL - Jointure - Sémantique

SQL - Jointures - Sémantique

Le résultat d’une jointure FK/ID représente les entités de la table de la clé


étrangère

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 23 / 31
SQL - Jointure - Sémantique

SQL - Jointures - Sémantique

SELECT ncli, [Link], datecom, npro


FROM detail d
JOIN commande c ON [Link] = [Link] ;

SELECT localite, [Link], [Link], libelle


FROM client c
JOIN commande com ON [Link] = [Link]
JOIN detail d ON [Link] = [Link]
JOIN produit p ON [Link] = [Link] ;

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 24 / 31
SQL - Jointure - Exercices

SQL - Jointures - Exercices

Donnez la sémantique de la requête suivante :


SELECT [Link], [Link], qcom, qstock
FROM detail
JOIN produit ON [Link] = [Link]
WHERE qcom > qstock ;

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 25 / 31
SQL - Jointure - Exercices

SQL - Jointures - Exercices

Donnez la sémantique de la requête suivante :


SELECT DISTINCT [Link], libelle, prix
FROM produit p
JOIN detail d ON [Link] = [Link]
JOIN commande com ON [Link] = [Link]
JOIN client c ON [Link] = [Link]
WHERE localite IN (0 Bruxelles 0 ,0 Liège 0 ,0 Namur 0 ) ;
Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,
Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 26 / 31
SQL - Jointure - Exercices

SQL - Jointures - Exercices

Donnez la sémantique de la requête suivante :


SELECT DISTINCT [Link]
FROM commande
JOIN client ON [Link] = [Link]
WHERE compte < 0 ;

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 27 / 31
SQL - Jointure - Exercices

SQL - Jointures - Exercices

Si la table CLIENT comporte 16 lignes et la table COMMANDE 7,


combien de lignes seront retournées par la requête suivante ?
SELECT *
FROM commande
JOIN client ON [Link] != [Link] ;
Quel est sa sémantique ?
Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,
Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 28 / 31
SQL - Jointure - Clé étrangère réflexive

SQL - Jointures - Clé étrangère réflexive

DptAdm est une clé étrangère vers DptNo.


C’est une clé étrangère réflexive (self-reference)
DptAdm est facultatif. Il peut être NULL.
Dessinez l’arborescence des départements suivants :
DptNo DptLib DptMgr DptAdm
A00 DEVELOPPEMENT 320 D21
B01 PRODUCTION 020 A00
C01 MAINTENANCE 030 A00
D11 SUPPORT 060 E11
D21 DIRECTION 070 null
E01 MARKETING 050 E11
E11 VENTES 340 D21
E21 FORMATION 100 E11

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 29 / 31
SQL - Jointure - Clé étrangère réflexive

SQL - Jointures - Clé étrangère réflexive


DptNo DptLib DptMgr DptAdm
A00 DEVELOPPEMENT 320 D21
B01 PRODUCTION 020 A00
C01 MAINTENANCE 030 A00
D11 SUPPORT 060 E11
D21 DIRECTION 070 null
E01 MARKETING 050 E11
E11 VENTES 340 D21
E21 FORMATION 100 E11

Que retournera la requête suivante sur la table ci-dessus ?


SELECT [Link], [Link], [Link]
FROM departement sup
JOIN departement dpt ON [Link] = [Link] ;

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 30 / 31
SQL - Jointure - Clé étrangère nulle

SQL - Jointures - Clé étrangère nulle


DptNo DptLib DptMgr DptAdm
A00 DEVELOPPEMENT 320 D21
B01 PRODUCTION 020 A00
C01 MAINTENANCE 030 A00
D11 SUPPORT 060 E11
D21 DIRECTION 070 null
E01 MARKETING 050 E11
E11 VENTES 340 D21
E21 FORMATION 100 E11

La requête suivante sur la table ci-dessus retournera combien de lignes ?


SELECT [Link], [Link], [Link]
FROM departement sup
JOIN departement dpt ON [Link] != [Link] ;
Quel est sa sémantique ?

Zakaria Attaouil, Abderrahmen Belfikh, Geneviève Cuvelier,


Persistance
Bruno Motry,
des données
Selim IRexhep, Mathieu Sassolas (HE2B
2024-2025
- ÉSI) 31 / 31

Vous aimerez peut-être aussi