Vous êtes sur la page 1sur 16

Chapitre 3 

: LANGAGES FORMELS DE CONSULTATION ASSOCIES AU MODELE


RELATIONNELLE

3.1 Langage algébrique (algèbre relationnelle)

Le langage algébrique a été introduit en 1970 par CODD. Il consiste à définir la liste des opérateurs de
l’algèbre relationnelle dont les opérandes sont des relations.

3.1.1 Traitement d’une requête de lecture/écriture

Le langage algébrique (LA) comprend deux types d’opérateurs :

Les opérateurs « ensemblistes » : UNION, INTETRSECTION, DIFFERENCE, PRODUIT CARTESIEN ;


Les opérateurs « relationnels » : SELECTION, PROJECTION, JOIN, DIVISION ;

Nous noterons dans tout ce chapitre :

t : un tuple de relation

t(A) dans R le sous -tuple de R relatif à l’attribut A

3.1.1.1 Opérateurs ensemblistes

Pour l’union (U), l’intersection (∩), la différence (-), les relations doivent être « union-
compatible », c’est-à-dire :

Les relations doivent avoir le même degré n ;


Les attributs associés deux à deux doivent être du même type syntaxique.

a. Union

L’opération d’intersection d’un n-uplet dans une relation peut facilement se faire avec l’opération
d’union.

L’union de deux relations R et S notée RUS est l’ensemble des tuples appartenant soit à R, soit à S,
soit à la fois à R et à S, donc RUS={t/t ϵ R OU t ϵ S}.

Exemple : Soient les relations PILOTE1 & PILOTE2 dont les tables suivent :

PL≠ ADR PILOTE1 PL≠ VD


100 PARIS PILOTE2 130 TOUL
101 PARIS 140 TOUL
120 PARIS 150 TOUL
110 PARIS 100 TOUL
120 TOUL
130 PARIS
101 PARIS
140 PARIS
110 PARIS

PILOTE1 : représente l’ensemble des pilotes de numéros habitants PARIS.


32

PILOTE2 : représente l’ensemble des pilotes numéros assurant un vol au départ de PARIS ou de TOULOUSE.

PILOTE1 U PILOTE2 : représente l’ensemble des pilotes habitants PARIS OU assurant un vol au départ de
PARIS ou de TOULOUSE.

PILOTE1 U PILOTE2 : PL≠ VILLE


100 PARIS
Les duplicats sont éliminés ; l’union 101 PARIS
permet de traduire le OU logique et donc 120 PARIS
110 PARIS
l’ajout de nouveaux tuples, pour ajouter des 130 TOUL
tuples t dans une relation R ; on construit t 140 TOUL
150 TOUL
avec le format adéquat et on effectue l’union 100 TOUL
120 TOUL
de R et de {t}.
130 PARIS
140 PARIS
b. L’intersection
L’intersection de deux relations notées R∩S est l’ensemble des tuples qui appartiennent à la fois à R et
à S.
Exemple : PL≠ VILLE PILOTE1∩PILOTE2 :
101 PARIS
110 PARIS

L’intersection permet la traduction de ET logique. PL1∩PL2 ne représente pas l’ensemble des


pilotes habitants PARIS et assurant un vol au départ de PARIS ou TOULOUSE (la preuve est que PL100 ne
fait pas partie du résultat).

c. La différence
La différence de deux relations R et S notée R-S est l’ensemble des tuples qui appartiennent à R
sans appartenir à S. R-S = {t/t ϵ R ET t ϵ S}. C’est une opération complémentaire de l’intersection.
L’opération de différence permet de supprimer un n-uplet dans une relation.
Exemple : En prenant les mêmes relations que précédemment, on a :
PILOTE1- PL≠ ADR PILOTE2 : PL1-PL2 représente l’ensemble des pilotes habitants PARIS
100 PARIS n’assurant pas de vol au départ de PARIS ou de TOULOUSE.
120 PARIS

La différence permet de traduire la différence logique, donc la suppression de tuples dans la


relation.
L’opération de modification (ou de mise à jour) sera traduite par une séquence adéquate
d’opérateur de différence et d’union, c’est-à-dire de suppression puis d’insertion.

d. Le produit cartésien

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

Le produit cartésien de deux relations R et S notées R S est l’ensemble de tous les tuples
obtenus par concaténation de tuples de R et de tuples de S. R S= {(t(r), t(s) avec t(r) ϵ R et t(s) ϵ S}. C’est un
ensemble de paires ordonnées.
Exemple : PL≠ ADR PILOTE3 et AVNO CAP AVION
103 NICE M
106 NICE AIRBUS 350
CARAC 250

D’où PILOTE AVION PL≠ ADR AVNOM CAP


103 NICE AIRBUS 350
103 NICE CARAV 250
106 NICE AIRBUS 350
106 NICE CARAV 250

Le produit cartésien n’est pas directement utilisé au niveau de l’interface algébrique. Par contre
nous verrons que deux opérateurs relationnels sont dérivés du produit cartésien.
Note : Les opérateurs UNION, INTERSECTION, DIFFERENCE peuvent être étendus à des relations qui ne sont
pas d’union compatibles (PIROTE 1981)

3.1.1.2 Opérateurs relationnels

Ils peuvent être regroupés en deux catégories :

Les opérateurs unaires de restriction,


Les opérateurs binaires d’extension.

a. Les opérateurs unaires de restriction

Ils permettent :

 Soit un découpage ‘’horizontal’’ d’une relation ; c’est ce qu’on appelle SELECTION,


 Soit un découpage ‘’vertical’’ d’une relation ; c’est ce qu’on appelle PROJECTION.

i. LA SELECTION
Soit Ѳ un des comparateurs <, >, ≤, ≥, =, ≠ applicables à l’attribut (ou à l’ensemble d’attribut) A et au
tuples c de la relation R. La
relation R (A Ѳ c) est l’ensemble des tuples de R pour lesquels Ѳ est vérifié entre la ou les composantes A et
le tuple c.
R (A Ѳ c) = {t/t ϵ R ET t AѲc}.
-Le tuple c pourrait être remplacé par un attribut ou un ensemble d’attributs B où A et B seraient
définis sur le(s) même(s) domaine(s). Dans ce cas, la qualification porterait sur les composants de A et de B
situés au même niveau.

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

-Enfin le tuple c pourrait aussi être remplacé par une valeur d’attribut (ou un groupe d’attributs).
Dans ce cas les différentes valeurs seraient placées entre guillemets.

Exemples: PILOTE4 représente l’ensemble des pilotes habitants PARIS ou TOULOUSE.

PILOTE4 PL≠ PLNOM ADR Si nous posons c = (120, PAUL, PARIS) alors nous
100 JEAN PARIS obtiendrons :
101 PIERRE PARIS
PILOTE4(ADR=c) PL≠ PLNOM ADR
120 PAUL PARIS
130 SERGE TOUL 100 JEAN PARIS
140 MICHEL TOUL 101 PIERRE PARIS
120 PAUL PARIS

PILOTE4 (ADR=c) représente l’ensemble des pilotes ayant la même adresse que le pilote N°120.

Exemple: PILOTE4 (ADR≠’’PARIS’’) représente l’ensemble des pilotes n’habitant pas PARIS.

PL≠ PLNOM ADR


130 SERGE TOUL
140 MICHEL TOUL

ii. PROJECTION
Soit R(A) une relation et un ensemble d’attribut A 1,…, An de R tel que (A1, A2,……, An) A. La projection
R (A1, A2,……, An) est la relation obtenue à partir de R(A) en éliminant de R(A) les attributs autres que ceux
spécifiés par A1, A2,……, An et en supprimant les tuples indiqués, le résultat est une relation c’est-à-dire un
ensemble sans dupliquât.

Exemple: Supposons la relation


AV≠ AVNOM CAP LOC Représente l’ensemble des avions localisés à PARIS ou
100 AIRBUS 350 TOUL TOULOUSE.
101 AIRBUS 350 TOUL
104 AIRBUS 150 PARIS AVION1 (AVNOM, AVNOM CAP CAP)
105 CARAN 250 PARIS AIRBUS 350
CARAN 250

On a AVION1 à partir d’AV≠ : AV≠


100
101
104
105

b. Les opérateurs binaires d’extension

Deux opérateurs d’extensions ont été définis :

 L’opérateur JOIN,
 L’opérateur DIVISION.

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

i. Le JOIN
Soient les relations R(A,B1) et R(B2,C) avec B1 et B2 des attributs définis sur le même domaine(le JOIN a
donc une définition sémantique bien précise), soit Ѳ(un des éléments de l’ensemble{<, >, ≤, ≥, =, ≠})
applicable aux valeurs des attributs B 1 et B2 . le JOIN de R sur B2 avec S sur B2 noté comme R(B1 Ѳ B2)S ou (R
S) est la relation dont les tuples sont ceux obtenus par concaténation des tuples de R avec ceux de S pour
lesquels la relation Ѳ entre les composantes B 1 et B2 est vérifiée.
On a : R(B1 Ѳ B2)S={t/tϵR S ET t(B1) Ѳ t(B2)}
Lorsque Ѳ est l’égalité (=), l’opérateur porte le nom d’EQUI-JOIN.
L’opérateur JOIN est équivalent à un produit cartésien ( ) et suivi d’une sélection.
)
NOTE :

Si le domaine sémantique de définition correspondant aux attributs de jointure est ‘’primaire’’ au


sens de DATE, la jointure est dite d’enrichissement ; autrement, il s’agit d’une jointure de qualification.

Exemples : Prenons : PILOTE1 PL≠ PLNOM ADR représente l’ensemble des pilotes
100 JEAN PARIS habitants PARIS.
101 PIERRE PARIS
120 PAUL PARIS

Et VOL≠ AV≠ PL≠ VOL1 représente les numéros des vols de la compagnie
IT 500 110 100 aérienne avec des numéros d’avion et de pilotes
IT 501 130 100 correspondants.
IT 503 110 100
IT 504 110 120
IT 506 120 120
IT 507 130 110

1.) PILOTE1(PL≠=PL≠)VOL1

PL≠ PLNOM ADR VOL≠ AV≠ PL≠


100 JEAN PARIS IT 500 110 100
100 JEAN PARIS IT 501 130 100
100 JEAN PARIS IT 503 110 100
120 PAUL PARIS IT 504 110 120
120 PAUL PARIS IT 506 120 120
2.) PILOTE1(PL≠>PL≠)VOL1

PL≠ PLNOM ADR VOL≠ AV≠ PL≠


101 PIERRE PARIS IT 500 110 100
101 PIERRE PARIS IT 501 130 100
101 PIERRE PARIS IT 503 110 100
120 PAUL PARIS IT 500 110 100
120 PAUL PARIS IT 501 130 100
120 PAUL PARIS IT 503 110 100
120 PAUL PARIS IT 507 130 110

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

CAS PARTICULIERS

#. Sélection

Une relation constante est une relation comportant ou comprenant un seul tuple (éventuellement
réduit à une seule valeur). L’opération SELECTION est un cas particulier du JOIN avec une relation
constante.

Exemple : Soit la relation constante : PL≠ C1


101
PILOTE1(PL≠>PL≠) PL≠ PLNOM ADR PL≠ C1
120 PAUL PARIS 101

#. Join Naturel

Notons que tous les attributs composants les relations apparaissent dans le JOIN. Dans l’EQUI-JOIN
par exemple, il y a deux colonnes identiques. Lorsque nous supprimons l’attribut de la deuxième relation,
on parle de ‘’JOIN NATUREL’’. Le JOIN NATUREL est donc un cas particulier de l’EQUI-JOIN naturel avec une
relation constante.

ii. La DIVISION

Nous allons nous limiter au cas de la division d’une relation binaire R par une relation unaire S.

Définition 1

R(A1÷A2)S = {t/t ϵ R[B] ET ({t} S≤R)} (1)


)
R(B, A1) et S(A2)

Le (1) équivaut à {t/t ϵ R[B] ET ᵾ s ϵ S, (t, s) ϵ R (2)

Soit R(B, S) une relation binaire et S(A 2) une relation unaire où A 1 et A2 sont des attributs sur le même
domaine, alors la division de R par S est le sous ensemble des éléments de R(B) dont le produit cartésien
avec S est inclus dans R.

(2) correspond à la définition intuitive de PIROTE en 1981 : «R(B,A1)÷S(A2) est l’ensemble des tuples t
de R(B) tel que pour chaque élément s de S, la concaténation de t et de s soit un tuple de R ».

Introduisons la notion de « l’ensemble image » d’un attribut. Soit R(x, y) une relation binaire. On
appelle ensemble image de x noté g R(x), l’ensemble {y, t(x,y)ϵR}.

Exemples : VOL1 AV≠ PL≠ gVOL1(AV≠ = 32) = {100,103}


32 100 gVOL1(AV≠ = 50) = {101,103}
50 101 gVOL1(AV≠ = 33) = {103}
50 103 gVOL1(PL≠ = 100) = {32}
32 103 gVOL1(PL≠ = 101) = {50}
33 103 gVOL1(PL≠ = 103) = {32,33,50}

En notant R(A1÷A2)S, la division de R par S sur les attributs respectifs A 1 et A2 (définis sur le même
domaine), et Ᾱ1 les attributs complémentaires de A1 dans R, on a :

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

Définition 2

R(A1÷A2)S = {t(ā1)/tϵR ET S(A2)≤gR(t(ā1))}

La relation résultante comprend la projection des tuples de la relation dividende R sur les attributs
complémentaires des attributs de division de A1 qui satisfont la division.

Exemple : AV≠ PL≠ VOL1 a.) Si le PL≠ diviseur est , le AV≠


résultat est 30 100 100 30
30 101 31
30 102
30 103
31 100
31 102
32 102
32 103
33 102

La division par une relation constante est équivalente à une sélection suivie d’une projection sur le
complément du diviseur.

 Avec Définition 2, on a :


t(ā1) = VOL1(AV≠) = {30,31,32,33}
gR(t(ā1)) = gVOL1(AV≠ = 30) = {100,101,102,103}
gVOL1(AV≠ = 31) = {100,102}
gVOL1(AV≠ = 32) = {102,103}
gVOL1(AV≠ = 33) = {102}
Avec R(A2) = {100}, on a R(A2) ⊆ gVOL1(AV≠ = 30)
et R(A2) ⊆ gVOL1(AV≠ = 31)
=> ainsi le résultat suivant :
AV≠
30
31
 Avec Définition 1, le résultat est immédiat.
Avant d’effectuer le produit cartésien R(B)={30,31,32,33}.
Comme (30,100), (31,100) font partie de VOL1, le résultat est {30,31}.

b.) Si le diviseur est, le résultat


PL≠ AV≠
est
102 30
103 32
# Exemple de requête faisant intervenir les opérateurs relationnels.
Traitons la requête suivante dans le langage algébrique (analyse puis écriture).
«  Quels sont les noms des pilotes qui conduisent tous les avions de la compagnie  ?  »

1erphase : Analyse de la requête


Aucune relation de la base considérée ne peut nous donner toutes les données nécessaires au
traitement de cette requête. Il nous faut :

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

- L’attribut PLNOM (attribut de sortie) ce qui requiert l’utilisation de la relation PILOTE


- L’information concernant ‘’ les pilotes qui conduisent’’, ce qui requiert l’utilisation de la relation VOL
- L’information concernant ‘’ tous les avions de la compagnie’’, ce qui ne peut être obtenu que dans la
relation AVION.

Les trois relations du schéma sont en jeu dans cette requête. L’attribut AV≠ permet de faire le lien
entre les relations AVION et VOL ; l’attribut PL≠ permet de faire le lien entre les relations PILOTE et VOL
(AV≠ et PL≠ sont des attributs de ‘’qualification’’).

2ièmephase : Écriture de la requête


Successivement nous donnerons les versions séquentielle, imbriquée et graphique de la requête
dans le langage algébrique.

Version séquentielle de la requête


Pour optimiser et réduire le des joins de la requête, on va en premier lieu appliquer les opérateurs
de restrictions aux trois relations concernées. Ensuite, on appliquera les opérateurs d’extension. On a :

VOL1 = VOL (AV≠, PL≠) « projection de la relation VOL sur les attributs de liaison »
AV1 = AVION (AV≠) « projection  ; AV1 contient tous numéros d’avions »
PL1 = PILOTE (PL≠, PLNOM) « projection »

PL2 = VOL1 (AV≠÷ AV≠) AV1 « division de VOL1 par AV1 pour avoir les numéros des pilotes qui
conduisent tous les avions »
PL3 = PL2 (PL≠÷PL≠) PL1 « équi-join qui permet d’avoir les noms des pilotes associés aux numéros des
pilotes qui nous intéressent »

Après l’application respective des deux opérateurs, on a le résultat suivant :


RESULTAT = PL3(PLNOM)
Note
La séquence précédente d’opérateur n’est pas unique. On aurait pu obtenir le même résultat en
effectuant les opérateurs d’extension d’abord. Mais le coût aurait été plus élevé (taille mémoire plus
grande, etc). C’est le rôle de l’analyseur de requête d’écrire une séquence «  optimale  ».

Version imbriquée de la requête


La même requête peut s’écrire directement sans faire apparaître des relations temporaires :

(PILOTE (PL ≠ PLNOM)(PL ≠ = PL ≠ (VOL(AV ≠, PL ≠)(AV ≠ ÷ AV ≠)AVION(AV ≠)))


(PLNOM))

Version graphique de la requête


Une requête algébrique correspond à un arbre qui peut être optimisé. En prenant la notion
introduite par SMITH & CHANG en 1975 ; ils ont défini :

PROJECTION SELECTION

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

DIVISION PRODUIT
CARTESIEN

JOIN UNION / INTER

La requête s’écrit de bas en haut. Ainsi on a la représentation suivante :

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

Le langage algébrique à la différence d’autres langages n’utilise pas de variables. Ceci


entraine une complexité plus grande dans l’écriture des requêtes « complexes ».

3.1 Langage prédicatifs (calcul relationnel)

Les langages prédicatifs sont fondés sur le calcul des prédicats du premier ordre. Pour cette
raison, nous commencerons par effectuer un rappel sur la logique mathématique.

3.2.1 Rappel sur la théorie des prédicats


Parmi les méthodes développées en intelligence artificielle, la démonstration automatique
de théorème exposée dans le cadre retreint du calcul propositionnel (« calcul de prédicats »,
« calcul relationnel ») est particulièrement bien adaptée aux problèmes posés par l’interaction
avec un SGBD dans le sens où elle rationalise les mécanismes de déduction.
a. Calcul proportionnel
Une proposition est une déclaration qui peut être soit vrai, soit fausse. Par exemple
« Socrate est mortel ».
« Vrai » ou « Faux » assigné à une proposition constitue la valeur de vérité de cette
proposition.
Les propositions peuvent être représentées par des lettres ; nous nous proposons
d’appeler atome ces symboles.
Exemples : « P : Socrate est mortel ».
On peut associer entre eux des atomes grâce aux connecteurs logiques : ┐(NON), Ʌ(ET),
V(OU), (IMPLICATION) pour construire des formules (┐, Ʌ, V sont universels).
Exemple : P : Le temps est nuageux
Q : Il fait chaud
R : Il va pleuvoir
Formules : ┐Q : Il ne fait pas chaud
(P Ʌ ┐Q) => R : si le temps est nuageux et s’il ne fait pas chaud alors il va
pleuvoir.

b. Interprétation
Soit A1, A2,……,An les n atomes distincts apparaissant dans une formule W. Une
interprétation de W est une assignation de « valeur de vérité » (Vrai ou faux) à A1, A2,……,An. Il
existe alors 2n interprétations possibles de W.

c. Prédicat
Soit un ensemble X dont on désigne par x la variable de parcours. On appelle P(x) une
forme d’énoncé qui devient une proposition lorsque x est remplacé par un élément donné a ϵ X.

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

Exemple : « x est un animal » est un exemple de prédicat à une variable. Ce prédicat devient une
proposition lorsqu’on donne à x une valeur spécifique.
P(CHIEN) = VRAI
P(MIKE) = FAUSSE
« x est un animal » = Q(x) et on a Q(JEAN) = VRAI
Cette définition peut être généralisé à n variables : P (x1, …, xn) est un prédicat à n
variables dont les valeurs sont des variables xi, i ϵ (1,n) parcourant les ensembles Xi, i ϵ [1,n].
Si quel que soit (a1, …, an), ai ϵ Xi, i ϵ [1,n], P(a1, …, an) est une proposition.

d. Formule bien formé (wff)


De la même façon qu’a été défini un prédicat, on peut définir une formule bien formée
(wff) :
 Tout prédicat est une wff
 Si A et B sont deux wff alors ˥A, A˅B, A˄B, A ≡ B, A) B, A => B, (∃x) A, (∀ x)A avec x variables
sont des wff.
L’ordre des quantificateurs de même type étant sans importance, il n’en ait pas de même
pour l’ordre des quantificateurs de types différents.

Conjonctive prenex d’une wff


On dit qu’une wff est dans la forme conjonctive prenex si les quantificateurs sont
regroupés au début de la wff.
On a les règles d’équivalence logique suivantes :
 ∀x A≡˥(∃x ˥A) et ∃xA ≡ ˥(∀x ˥A)
 Théorème de Morgan
˥(A ˅ B) ≡ ˥A et ˥B
˥(A ˄ B) ≡˥A ou ˥B
 A˅A˄B≡A
A ˄ (A ˅ B) ≡ (à chercher)
 A => B est équivalent à ˥A ˅ B, ˥B => ˥A …. À {A} ⊆{B}.

Une variable est libre dans une formule A si A contient x et A ne renferme aucun quantificateur
contenant x.
Une wff est dite ouverte s’il existe des variables libres.
Une wff est die fermée s’il n’existe pas de variables libres.

e. Exemples de représentation de données à l’aide des prédicats

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

Exemple1 : De données élémentaires et de prédicats associés.

 PIERRE aime JEANNE est une proposition à partir de laquelle on peut construire un prédicat
à deux arguments AIME (x, y) dont une valeur AIME (PIERRE, JEANNE).
 PIERRE conduit l’avion n°100 entre PARIS et TOULOUSE sur le vol IT500 entre 19h et 20H
oVOL(x, y, z, t, u, v, w) dont une valeur est VOL(IT500, PIERRE, 100, PARIS, TOULOUSE,
19, 20) .
Exemple2 : De données globales et de wff associées :

 Tout le monde aime EDITH o pour tout x (PERSONNE)(x)  AIME(x, EDITH) ce qui se
traduit comme suit : pour tout x , si x est une personne alors x aime EDITH.
Pour tout x AIME (x, EDITH) ceci est incorrect sauf si x est d’un type prédéfini.
 Tous les hommes d’origine o pour tout x (PERSONNE(x) et CHINOIS(x) =>
EXHUBERANT(x)) chinoises sont exubérants.

3.3 Langage SQL : Utilisation interactive


Le langage SQL connu aussi sous le nom de SEQUEL : « Structured English as a QUery
Language » est en fait plus qu’un langage d’accès ; il permet en effet les opérations de stockages
comme : INSERT, UPDATE, DELETE.

3.3.1 Traitement d’une requête de lecture


L’opération fondamentale de SQL pour la recherche de données est : le mapping.
SELECT : (liste des attributs recherchés) ou (*)
FROM : (Nom de la relation où se trouve le résultat ou des relations à joindre)
WHERE : (Qualification qui est un wff)
La clause SELECT permet un découpage vertical de la relation cible.
Si on veut éliminer les duplicats, il faut introduire la clause U[NIQUE] et on écrit SELECT
U(DISTINCT dans SQL*). Si on veut tous les attributs, on indique *.
La clause WHERE permet un découpage horizontal de la relation cible, y compris
l’expression de jointure.
Les mapping peuvent être imbriqué lorsque la qualification porte sur plusieurs relations.
Cette imbrication porte le nom de net. Le lien entre mapping imbriqués peut être :
--ensembliste (IN)
--mathématique (>, =, …) avec les mots clés ANY (implicite) ou ALL
Exemple1 : Quels sont les pilotes dont le salaire est supérieur à 10% à la moyenne des salaires des
pilotes ?

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

SELECT *
FROM PILOTE Px
WHERE SAL > (SELECT AVG(SAL)*1,1 FROM Px)
Px est une variable relation synonyme de PILOTE, utilisé dans un mapping interne.
Les opérations ensemblistes classiques UNION, INTERSECTION, DIFFERENCE, INCLUSION
peuvent être exprimé en SQL.
Exemple2 : Quels sont les numéros des pilotes qui ne sont pas en service ?
(SELECT PL‡
FROM PILOTE) => ensemble des numéros de pilote de la compagnie (pris dans la relation PILOTE)
MINUS (différence)
(SELECT PL‡
FROM VOL) => ensemble des numéros des pilotes qui sont en service
SQL est le seul langage relationnel à avoir intégré la recherche hiérarchique intra-relation
qui correspond à la fermeture transitive (possibilité de déduire le couple [a, c] à partir [a, b] et [b,
c]).
La recherche hiérarchique dans une relation est utilisée par la classe CONNECT BY (nœud
courant) utilisée conjointement avec START WITH (qualification) et le mot réservé PRIOR (nœud
précédent).

Exemple3 : Quels sont tous les vols desservis au départ de PARIS après 16 ?
Les attributs VD et VA de VOL constituent une arborescence de valeurs.
SELCET VA
FROM VOL
CONNECT BY VA
PRIOR VD AND HD>16
START WITH VD = ‘’ PARIS ‘’

3.3.2 Traitement d’une requête d’écriture


UPDATE, INSERT, DELETE sont des opérateurs de mis à jour qui ne portent que sur une
seule relation à la fois.
Pour chaque opération de modification (UPDATE) on a la séquence suivante :

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

UPDATE (Nom de la relation concernée)


SET (attribut modifié avec une nouvelle valeur)
WHERE (Qualification d’accès aux anciens tuples)
Pour chaque opération de suppression, on a la séquence suivante :
DELETE (Nom de la relation concerné)
WHERE (Porte sur la qualification d’accès au tuples à supprimer)
L’opération d’insertion est de la forme suivante :
INSERT INTO (Nom de la relation cible) : (ensemble des tuples à insérer)
L’ensemble des tuples à insérer peut être un mapping (SELECT-FROM-WHERE)

3.3.3 les fonctions bibliothèques


Les fonctions bibliothèques suivantes sont pris en compte par SQL.

 COUNT (comptage)
 SUM (somme)
 AVG (moyenne)
 MAX (maximum)
 MIN (minimum)
Les fonctions bibliothèques ci-dessus peuvent apparaître soit dans la clause SELECT soit
dans la clause WHERE du mapping.
Exemple : Quelle est la moyenne des capacités des avions localisés à PARIS ?
SELCET AVG (CAP)
FROM AVION
WHERE LOC = ‘’PARIS‘’
La notion de partitionnement aussi intégré dans SQL; dans ce cas le mapping est de la
forme suivante:
SELECT (attribut cible)
FROM (relation cible)
WHERE
GROUP BY (attribut de partitionnement) < la relation est partitionnée en page groupé
ayant la même valeur d’attribut >
HAVING (qualification) < cas particulier de WHERE appliqué aux groupes et non aux tuples

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

NOTE : la clause WHERE permet l’élimination des tuples ne satisfaisant pas la qualification alors
que la clause HAVING permet l’élimination de groupe. WHERE est toujours évalué avant le
partitionnement.
Exemple : Quels sont les numéros de pilotes parmi 100, 110, 120, 130 qui assurent plus de 03 vols
avec le nombre de vols assurées ?
SELECT PL‡, COUNT(*)
FROM VOL
WHERE PL‡ IN(100, 110, 120, 130)
GROUP BY PL‡
HAVING COUNT (*) > 3

3.4 SQL intégré dans un langage de programmation : FOXPRO


Exemples
1. Afficher les noms de tous les pilotes de la table PILOTE (un champ d’une table)
SELECT PLNOM SELECT PILOTE.PLNOM
FROM PILOTE ou FROM PILOTE

2. Afficher le contenu de 03 champs provenant de deux tables différentes et effectuer une


jointure, des deux tables, basées sur le champ PL‡. Les aléas sont utilisés par les deux tables.
SELCET a.PLNOM, b.AV‡, b.PL‡
FROM PILOTE.a, VOL.b
WHERE a.PL‡ = b.PL‡

3. Afficher les enregistrements contenant des données uniques dans les champs spécifiques.
SELECT DISTINCT a.PLNOM, b.AV‡, b.PL‡
FROM PILOTE.a, VOL.b
WHERE a.PL‡ = b.PL‡

4. Afficher les champs PLNOM, PL‡, ADR dans l’ordre croissant.


SELECT PLNOM, PL‡, ADR
FROM PILOTE
ORDER BY PLNOM, PL‡, ADR

5. Stocker le contenu des champs de 2 tables dans une troisième table.

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com


32

SELECT a.PLNOM, b.AV‡, b.PL‡


FROM PILOTE.a, VOL.b
WHERE a.PL‡ = b.PL‡
INTO TABLE PILOTE1.bdf
BROWSE
CLOSE DATA

6. Afficher les enregistrements dont le salaire est supérieur à 5000


SELECT b.PLNOM, a.PL‡, b.PL‡
FROM PILOTE.b, COMPTA.a
WHERE a.PL‡ = b.PL‡ AND a.SAL > 5000

7. Afficher tous les enregistrements de la table pilote ayant un nom PILOTE commençant par la
lettre majuscule P et de longueur quelconque.
SELCET *
FROM PILOTE
WHERE PLNOM LIKE ‘’P%’’

8. Commançant par L suivie de quatre (04) carctères quelconques.


SELECT *
FROM PILOTE
WHERE PLNOM LIKE ‘’L _ _ _ _ ‘’

9. Afficher les noms de tous les pilotes de la table PILOTE en lettre majuscule et appellera la
colonne de sortie L pilotes.
SELECT UPER (PLNOM) AS Lpilotes
FROM PILOTE

Cours de BASE DE DONNEES de Mr. Justin Komla Vinyo DAMALI/damalijustin@gmail.com

Vous aimerez peut-être aussi