Vous êtes sur la page 1sur 54

Interrogation d’une BD

Algèbre relationnelle et requête SQL

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

SELECT a,b,c SGBD a b c


FROM S,T
WHERE S.x = T.y
AND d=cte ;
Base de
données
4
Langages d’interrogation
• Tout langage d’interrogation relationnel a deux
catégories d’opérateurs :
– Opérateurs relationnels
• Projection, Sélection, Jointure, Division
– Opérateurs ensemblistes
• Union, Intersection, Différence

• Toute requête est basée sur ces opérateurs.


• Les opérateurs s’appliquent à des tables et le
résultat est une table  les opérateurs peuvent
être composés.

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

Liste de projection b,c Opérateur de b,c


projection

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

• Standard de l’ANSI (American National


Standards Institute), reconnu
internationalement.

• SQL fonctionne avec la plupart des SGBD du


marché ; ces SGBD peuvent cependant avoir
des extensions propriétaires en complément du
SQL standard.
18
SQL
• Langage de manipulation de données SQL
– SELECT : extrait des données d’une base de données
– UPDATE : met à jour des données
– DELETE : supprime des données
– INSERT INTO : insère de nouvelles données
• Langage de définition de données SQL
– CREATE TABLE : crée une nouvelle table dans la BD
– ALTER TABLE : modifie une table
– DROP TABLE : supprime une table
– CREATE INDEX : crée un index (une clé de recherche)
– DROP INDEX : supprime un index

19
SQL
• Commande SELECT

SELECT colonne(s)
FROM table(s)
[ WHERE condition(s) ]
[ GROUP BY colonne(s) ]
[ HAVING condition(s) ]
[ ORDER BY colonne(s) ];

Les parties entre [ ] sont optionnelles.

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

SELECT * SELECT b,c


condition FROM I condition FROM I
WHERE condition ; WHERE condition ;

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.

– Exemple : Trouver tous les noms d’usines, avec leurs


numéros, présentés dans l’ordre alphabétique
inverse.

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.

SELECT colonne AS [alias de colonne] …


FROM …

28
SQL
• Clause WHERE : écriture des conditions
– Valeurs de type texte : simple ou double guillemet
• Exemple : NomP = "Robe"

– Valeurs de type numérique : pas de guillemets


• Exemple : NuméroU = 6009

– Valeurs de type date (AAAA-MM-JJ) : dièses


• Exemple : DateFabrication = #2011-01-30#

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#

– OR l’une ou l’autre des conditions doit être satisfaite


• Exemple : pour sélectionner les produits dont le nom est soit
"Robe" soit "Veste".
NomP = "Robe" OR NomP = "Veste"

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

DateFabrication BETWEEN #2011-01-30# AND #2011-02-28#


est équivalent à
DateFabrication >= #2011-01-30#
AND DateFabrication <= #2011-02-28#

– NOT BETWEEN hors d’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

S.s1 > T.t2


Table R
résultat
s1 s2 t1 t2 t3
1000 xyz xyz 900 50
1000 xyz uvw 10 7
1000 xyz rst 450 60
300 rst uvw 10 7
41
Algèbre relationnelle
• Jointure
– Equi-jointure : cas particulier de jointure où le critère
contient seulement des égalités.

– Jointure naturelle : jointure entre une clé étrangère et


la clé primaire dont elle dépend (cas particulier
d’équi-jointure).

42
Algèbre relationnelle
• Jointure
– Jointure naturelle : exemple

Table Produits Table Usines


NuméroP NomP NuméroU NuméroU NomU AdresseU
1 Robe 6009 6009 Tex 1 bd Europe Tlse
2 Veste 4621 1254 Bat 65 rt Canal Paris
3 T-Shirt 6009 4621 Fig 8 Oxf rd London
4 Pantalons 1254

Produits.NuméroU
Table résultat = Usines.NuméroU

NuméroP NomP NuméroU1 NuméroU2 NomU AdresseU


1 Robe 6009 6009 Tex 1 bd Europe Tlse
2 Veste 4621 4621 Fig 8 Oxf rd London
3 T-Shirt 6009 6009 Tex 1 bd Europe Tlse
4 Pantalons 1254 1254 Bat 65 rt Canal Paris

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*)

1. Trouvez le nom et la superficie des pays où les fleuves prennent


leur source.
SELECT P_Nom, P_Superficie
FLEUVES PAYS
FROM FLEUVES, PAYS
WHERE P_Nom=P_Nom_source ;
P_Nom = P_Nom_source
R1

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*)

2.Trouvez le nom et la superficie du pays où le fleuve Garonne a sa


source.
SELECT P_Nom, P_Superficie
FLEUVES PAYS
FROM FLEUVES, PAYS
WHERE P_Nom=P_Nom_source
F_Nom="Garonne"
AND F_Nom="Garonne" ;

R1

P_Nom P_Nom, P_superficie


=P_Nom_source
R2
R3 53
La démarche d’interrogation
• Je pose une question au SGBD…
a) Identifier sur le schéma E/A les propriétés que l’on doit afficher
et celles nécessaires pour les restrictions exprimées dans la
question.
b) Choisir sur le schéma E/A les associations par lesquelles on va
passer pour relier les entités impliquées dans a) en fonction de
la question.
c) Repérer dans le schéma relationnel les attributs et les tables
correspondant à ce qui a été repéré en a) et b).
d) Effectuer pour chaque table les restrictions nécessaires.
e) Relier les tables 2 à 2 avec les jointures adéquates.
f) Appliquer à la dernière table obtenue une projection sur les
attributs que l’on souhaite afficher.

54

Vous aimerez peut-être aussi