Académique Documents
Professionnel Documents
Culture Documents
M1 Gestion
Alain Berro
Langages d’interrogation
• Langages d’interrogation : permettent la
manipulation et l’extraction de données d’une
base de données.
• La plupart sont basés sur une adaptation de
l’algèbre relationnelle classique
sont appelés langages relationnels
2
Langages d’interrogation
• Types de langages d’interrogation
– Procéduraux
• Décrivent une séquence d’opérations (c’est-à-dire une
procédure) à exécuter pour trouver le résultat attendu.
• L’un des plus populaires : l’algèbre relationnelle
– Déclaratifs
• Décrivent le résultat attendu sans indiquer la procédure pour
le trouver.
• Le standard international est le Structured Query Language
(SQL).
• Query-by-Example (QBE) est un autre langage populaire. Il
possède une interface graphique qui permet aux utilisateurs
d’écrire les requêtes en créant des exemples de tables à
l’écran.
3
Langages d’interrogation
Algèbre relationnelle QBE
S T S T
d=cte
a b c d
Afficher
a,b,c Critères =cte
SQL R
5
Algèbre relationnelle
• Langage procédural
• Une requête exprimée dans ce langage donne
le résultat sous forme d’une table, construite à
partir d’une séquence d’opérations (une
procédure) sur les tables de la base de données
à interroger.
• Permet de comprendre la signification des
requêtes.
6
Algèbre relationnelle
Table S s1 s2 t1 t2 t3 Table T
en entrée en entrée
Sélection
Opération 1 Elimination
de lignes
Opération 2 de
colonnes
Table N1 s1 s2
intermédiaire t1 t3 Table N2
intermédiaire
Opération 3 Combinaison
de lignes des
Table deux tables
s1 s2 t1 t3
résultat
7
Algèbre relationnelle
• Projection
– Supprime des colonnes d’une table : celles qui ne
sont pas dans la liste de projection.
a b c
Table I
en entrée Représentation
b c R
Table R
résultat
8
Algèbre relationnelle
• Projection
– Exemple : Trouver tous les noms d’usines.
Table Usines
NuméroU NomU AdresseU
6009 Tex 1 bd Europe, Tlse
1254 Bat 65 rte Canal, Paris
4621 Fig 8 Oxford rd, London
Usines
NomU
NomU
NomU
Table Tex
résultat Bat R
Fig
9
Algèbre relationnelle
• Projection
– Exemple : Trouver les numéros des usines où des
produits sont fabriqués.
Table Produits
NuméroP NomP NuméroU
1 Robe 6009
2 Veste 4621
3 T-Shirt 6009
4 Pantalon 1254
?
10
Algèbre relationnelle
• Projection
– Pour éliminer les doublons de la table résultat, utiliser
l’opérateur suivant :
11
Algèbre relationnelle
• Projection
– Exemple : Trouver les différents numéros des usines
où des produits sont fabriqués.
Table Produits
NuméroP NomP NuméroU
1 Robe 6009
2 Veste 4621
3 T-Shirt 6009
4 Pantalon 1254
?
12
Algèbre relationnelle
• Sélection :
– Sélectionne un sous-ensemble de lignes d’une table :
celles qui satisfont la condition de sélection.
a b c
Table I xyz 900 50
en entrée uvw 10 7 Représentation
rst 450 60
I
Condition de b=10
sélection Opérateur de condition
sélection
Table R a b c R
résultat uvw 10 7
13
Algèbre relationnelle
• Sélection :
– Exemple : Trouver l’enregistrement qui concerne l’usine
qui s’appelle "Fig".
Table Usines
NuméroU NomU AdresseU
6009 Tex 1 bd Europe, Tlse
1254 Bat 65 rte Canal, Paris
4621 Fig 8 Oxford rd, London
14
Algèbre relationnelle
• Sélection et projection
– Exemple : Trouver l’adresse de l’usine qui s’appelle
"Fig".
Table Usines
NuméroU NomU AdresseU
6009 Tex 1 bd Europe, Tlse
1254 Bat 65 rte Canal, Paris
4621 Fig 8 Oxford rd, London
15
Algèbre relationnelle
• Sélection et projection
– Exemple : Trouver le nom des produits fabriqués
dans l’usine numéro 6009.
Table Produits
NuméroP NomP NuméroU
1 Robe 6009
2 Veste 4621
3 T-Shirt 6009
4 Pantalon 1254
?
16
Exercice : BD géo
• Modèle relationnel
PAYS (P_Nom, P_Superficie, P_NbHabitants)
ESPACES_MARITIMES (EM_Nom, EM_Type)
FLEUVES (F_Nom, F_Longueur, P_Nom_source*, EM_Nom_jette*)
FRONTIERE (P_Nom_estfrontalier*, P_Nom_apourfrontalier*)
TRAVERSER (F_Nom*, P_Nom*, distance)
COTOYER (P_Nom*, EM_Nom*)
– Ecrivez les requêtes suivantes en algèbre relationnelle
1. Trouvez le nom de tous les fleuves avec leur longueur.
2. Trouvez le nom, la superficie et le nombre d’habitants des pays dont le
nombre d’habitants est supérieur à 10 millions.
3. Trouvez le nom des fleuves dont la longueur est supérieure à 500 km.
4. Trouvez le nom du pays où le fleuve Garonne prend sa source.
5. Trouvez le nom des fleuves dont la longueur est entre 300 et 500 km.
6. Trouvez le nom des fleuves qui commencent par la lettre G.
17
SQL
• Structured Query Language (SQL) : langage
pour traiter et créer des bases de données.
– erferf
19
SQL
• Commande SELECT
SELECT colonne(s)
FROM table(s)
[ WHERE condition(s) ]
[ GROUP BY colonne(s) ]
[ HAVING condition(s) ]
[ ORDER BY colonne(s) ];
20
SQL
• De l’algèbre relationnelle au SQL : la projection
I I
SELECT b,c SELECT DISTINCT b
b,c FROM I ; b FROM I ;
R R
21
SQL
• De l’algèbre relationnelle au SQL : la projection
– Exemple : Trouver tous les noms d’usines.
SQL ?
Usines
NomU
22
SQL
• De l’algèbre relationnelle au SQL : la projection
– Exemple : Trouver les différents numéros des usines
où des produits sont fabriqués.
SQL ?
Produits
NuméroU
23
SQL
• De l’algèbre relationnelle au SQL : la sélection
I I
R R1
b,c
* = toutes les colonnes
R2
24
SQL
• De l’algèbre relationnelle au SQL : la sélection
– Exemple : Trouver l’adresse de l’usine qui s’appelle
“Fig”.
Usines SQL ?
NomU = "Fig"
R1
AdresseU
R2
25
SQL
• Clause ORDER BY
– Utilisée pour trier les enregistrements de la table
résultat d’après des colonnes données.
– Par défaut, le tri est par ordre croissant (ASC) c’est-à-
dire de la valeur la plus petite à la valeur la plus
grande. ASC peut être spécifié, mais ce n’est pas
nécessaire.
– Pour un tri dans l’ordre décroissant, utiliser DESC.
SELECT colonne(s)
FROM table(s)
…
ORDER BY colonne1, colonne2 … [ ASC/DESC ] ;
26
SQL
• Clause ORDER BY
– Exemple : Trouver tous les noms d’usines, avec
leurs numéros, présentés dans l’ordre alphabétique.
27
SQL
• Alias
– Alias de colonne
• Utilisé pour renommer des colonnes dans la table résultat.
• Permet rendre la lecture du résultat plus explicite.
28
SQL
• Clause WHERE : écriture des conditions
– Valeurs de type texte : simple ou double guillemet
• Exemple : NomP = "Robe"
29
SQL
• Clause WHERE : AND / OR
– AND conditions qui doivent toutes être satisfaites
• Exemple : pour sélectionner les produits fabriqués le 30
Janvier 2011 dont le nom est "Robe".
NomP = "Robe" AND DateFabrication = #2011-01-30#
30
SQL
• Clause WHERE : AND / OR
– AND et OR peuvent être combinés (utilisation de
parenthèses)
• Exemple : pour sélectionner les produits dont le nom est soit
"Robe" soit "Veste", qui ont été fabriqués le 30 Janvier 2011.
(NomP = "Robe" OR NomP = "Veste")
AND DateFabrication = #2011-01-30#
31
SQL
• Clause WHERE : opérateurs
– Opérateurs binaires
= égal
<> différent
> supérieur
< inférieur
>= supérieur ou égal
<= inférieur ou égal
– Opérateur unaires
is null retourne vrai si la valeur n’est pas affectée
is not null retourne vrai si la valeur est affectée
32
SQL
• Clause WHERE : opérateurs
– BETWEEN dans un intervalle inclusif de valeurs
33
SQL
• Clause WHERE : opérateurs
– LIKE recherche d’un motif
* est utilisé pour définir un certain nombre de caractères non
spécifiés avant et/ou après le motif
• Pour sélectionner les produits dont le nom…
commence par la lettre "R" : NomP LIKE "R*"
se termine par la lettre "e" : NomP LIKE "*e"
contient la chaîne de caractères "st" : NomP LIKE "*st*"
? est utilisé pour définir un caractère non spécifié dans un
motif
– NOT LIKE différent d’un motif
34
Exercice : BD géo
• Modèle relationnel
PAYS (P_Nom, P_Superficie, P_NbHabitants)
ESPACES_MARITIMES (EM_Nom, EM_Type)
FLEUVES (F_Nom, F_Longueur, P_Nom_source*, EM_Nom_jette*)
FRONTIERE (P_Nom_estfrontalier*, P_Nom_apourfrontalier*)
TRAVERSER (F_Nom*, P_Nom*, distance)
COTOYER (P_Nom*, EM_Nom*)
– Ecrivez les requêtes suivantes en SQL
1. Trouvez le nom de tous les fleuves avec leur longueur.
2. Trouvez le nom, la superficie et le nombre d’habitants des pays dont le
nombre d’habitants est supérieur à 10 millions.
3. Trouvez le nom des fleuves dont la longueur est supérieure à 500 km.
4. Trouvez le nom du pays où le fleuve Garonne prend sa source.
5. Trouvez le nom des fleuves dont la longueur est entre 300 et 500 km.
6. Trouvez le nom des fleuves qui commencent par la lettre G.
35
Algèbre relationnelle
• Produit
– Permet de combiner les lignes de deux tables S et T :
chaque ligne de S est combinée avec chaque ligne
de T.
S T
R
36
Algèbre relationnelle
• Produit
Table S Table T
en entrée en entrée
s1 s2 t1 t2 t3
1000 xyz xyz 900 50
2 lignes uvw 10 7 3 lignes
300 rst
rst 450 60
Table R
résultat
s1 s2 t1 t2 t3
1000 xyz xyz 900 50
1000 xyz uvw 10 7
2 3 lignes 1000 xyz rst 450 60
300 rst xyz 900 50
300 rst uvw 10 7
300 rst rst 450 60
37
Algèbre relationnelle
• Jointure
– Permet de combiner les lignes de deux tables en
fonction d’un certain critère sur deux de leurs
champs (ou groupes de champs) de même type.
S T
Critère
38
Algèbre relationnelle
• Jointure
– Equivalent à un produit suivi d’une sélection, dont la
condition est le critère.
S T
S T
est équivalent à
Critère
R N
Critère
R
39
Algèbre relationnelle
• Jointure
Table S Table T
en entrée en entrée
s1 s2 t1 t2 t3
1000 xyz xyz 900 50
300 rst uvw 10 7
rst 450 60
S.s2 = T.t1
Table R
résultat
s1 s2 t1 t2 t3
1000 xyz xyz 900 50
300 rst rst 450 60
40
Algèbre relationnelle
• Jointure
Table S Table T
en entrée en entrée
s1 s2 t1 t2 t3
1000 xyz xyz 900 50
300 rst uvw 10 7
rst 450 60
42
Algèbre relationnelle
• Jointure
– Jointure naturelle : exemple
Produits.NuméroU
Table résultat = Usines.NuméroU
43
Algèbre relationnelle
• Jointure
– Exemple : Trouver le nom de l’usine où le produit
T-Shirt est fabriqué.
44
Algèbre relationnelle
• Jointure
– Exemple : Trouver le nom des produits fabriqués
dans l’usine Tex.
45
SQL
• De l’algèbre relationnelle au SQL : Jointure
S T
S T
SELECT *
FROM S, T
condition
critère WHERE critère ;
R R1
SELECT *
FROM S, T critère
WHERE condition
R2
AND critère ;
46
SQL
• De l’algèbre relationnelle au SQL : Jointure
– Exemple : Trouver le nom de l’usine où le produit
T-Shirt est fabriqué.
Produits Usines SQL?
NomP = "T-Shirt"
R1
R1.NuméroU
= Usines.NuméroU
R2
NomU
R3 47
SQL
• De l’algèbre relationnelle au SQL : Jointure
– Exemple : Trouver le nom de l’usine où le produit
T-Shirt est fabriqué.
Produits Usines SQL?
Produits.NuméroU
= Usines.NuméroU
R1
NomP = "T-Shirt"
R2
NomU
R3 48
SQL
• Alias
– Alias de tables
• Utilisés pour renommer des tables (nom court).
• Facilite le travail avec les noms de tables, en particulier
lorsqu’ils sont longs.
• Nécessaire lorsque plusieurs instances d’une même table
sont nécessaires dans une requête.
SELECT …
FROM table [AS] alias_table …
49
SQL
• Alias
– Exemple : Trouver le nom de l’usine où des T-Shirts
sont fabriqués.
SELECT NomU
FROM Usines, Produits
WHERE NomP = "T-Shirt"
AND Produits.NuméroU = Usines.NuméroU ;
SELECT NomU
FROM Usines U, Produits P
WHERE NomP = "T-Shirt"
AND P.NuméroU = U.NuméroU ;
50
Exercice : BD géo
• Modèle relationnel
PAYS (P_Nom, P_Superficie, P_NbHabitants)
ESPACES_MARITIMES (EM_Nom, EM_Type)
FLEUVES (F_Nom, F_Longueur, P_Nom_source*, EM_Nom_jette*)
FRONTIERE (P_Nom_estfrontalier*, P_Nom_apourfrontalier*)
TRAVERSER (F_Nom*, P_Nom*, distance)
COTOYER (P_Nom*, EM_Nom*)
– Ecrivez les requêtes suivantes en algèbre relationnelle et SQL
1. Trouvez le nom et la superficie des pays où les fleuves prennent leur source.
2. Trouvez le nom et la superficie du pays où le fleuve Garonne a sa source.
3. Trouvez la liste des pays traversés par le fleuve Garonne. Donnez leurs
noms, superficies, et la distance couverte par le fleuve.
4. Trouvez le nom des fleuves de plus de 500 km de long qui se jettent dans une
mer.
5. Trouvez le nom et la superficie des pays côtoyés par l’espace maritime dans
lequel se jette le fleuve Rhône.
6. Trouvez le nom des pays bordés par un espace maritime dans lequel se jette
un fleuve qui prend sa source en France. 51
Exercice : BD géo
PAYS (P_Nom, P_Superficie, P_NbHabitants)
ESPACES_MARITIMES (EM_Nom, EM_Type)
FLEUVES (F_Nom, F_Longueur, P_Nom_source*, EM_Nom_jette*)
FRONTIERE (P_Nom_estfrontalier*, P_Nom_apourfrontalier*)
TRAVERSER (F_Nom*, P_Nom*, distance)
COTOYER (P_Nom*, EM_Nom*)
P_Nom, P_superficie
R2
52
Exercice : BD géo
PAYS (P_Nom, P_Superficie, P_NbHabitants)
ESPACES_MARITIMES (EM_Nom, EM_Type)
FLEUVES (F_Nom, F_Longueur, P_Nom_source*, EM_Nom_jette*)
FRONTIERE (P_Nom_estfrontalier*, P_Nom_apourfrontalier*)
TRAVERSER (F_Nom*, P_Nom*, distance)
COTOYER (P_Nom*, EM_Nom*)
R1
54