Vous êtes sur la page 1sur 10

T-GSI STAGE RENOVATION - SQL.

Chapitre 1 -

Algbre Relationnelle
et Introduction au Langage SQL

Sources du document :

Livre bible Oracle 9i, J. Gabillaud, Editions Eni ;


Support Oracle ;
ISO Norme 2382:1999 parties 1 5, ISO Norme 9075 parties 1 14 corriges en 2005.

Sources du document :

Site sql.developpez.com ;
Manuel SQL PostgreSQL (existe en plusieurs versions HTML, PDF).

Olivier Mondet
http://unidentified-one.net

A. Les requtes

Une requte est destine obtenir des informations prcises et ordonnes sur la base de donnes. On
peut galement par le biais des requtes :
effectuer des calculs,
obtenir des statistiques,
modifier les tables,
crer de nouvelles tables
grer des utilisateurs

Trois faons de crer des requtes :


Lalgbre relationnelle qui permet de prparer une requte en utilisant un langage algbrique.
Le QBE (Query By Exemple), qui est un mode graphique o lon clique sur les lments choisis
pour construire la requte. Cest un moyen interactif et puissant utilis par Access.
Le SQL (Structured Query Langage) qui est le langage des requtes, qui est plus puisant que le
QBE et plus universel.

B. Lalgbre relationnelle

B.1. Dfinition de lalgbre relationnelle

Ensemble doprations permettant de manipuler des relations (schma relationnel) et produisant


comme rsultat de nouvelles relations.

Bas sur le langage algbrique de Codd (Edgar Frank Codd dcd en 2003, pre entre autre des
Forme Normales ).

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 1 / 10 om (2001-2005)


B.2. Objectif de lalgbre relationnelle

Description algorithmique ou symbolique prliminaire lutilisation dun langage non procdural de


type SQL.

B.3. Types doprations

Oprations spcifiques au modle relationnel (Oprateurs relationnels) :

Les oprations spcifiques sont unitaires comme la Projection et la Slection (une relation manipule)
ou binaire comme la Jointure.

Plusieurs types de Jointures existent : Equijointure (ou jointure naturelle), Jointure externe gauche ou
droite (cela sera dtaill avec la clause JOIN dans le chapitre qui suit).

Oprations de la thorie des ensembles (Oprateurs ensemblistes) :

Degr dune relation :


Cest le nombre de constituants (attributs) qui participent cette relation.

Notion de t-uplet :
Pour une relation de degr t, chaque occurrence de cette relation est un t-uplet (ou tuple).

C. Oprateurs de base

C.1. La projection

La projection permet dextraire des donnes dune table, en ne conservant que les colonnes souhaites.

Notation :
R2 = PROJECTION R1(Nom-Champ, Nom-Champ)

R1 et R2 sont deux relations, entre parenthses figurent les critres de projection.

Instructions SQL :
SELECT Nom-Table.Nom-Champ, Nom-Table.Nom-Champ
FROM Nom-Table;

Exemple :
Soit la table FILM qui permet de grer une vidothque.

FILM
Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 2 / 10 om (2001-2005)
no-film titre dure production code-catgorie
10 Camille Claudel 150 Gaumont COMD
20 Fentre sur cour 120 Path COMD
25 Sueurs froides 115 Path COMD
50 Cendrillon 140 UGC DESA
64 Super Mondet II 10 Universal DOCU
65 La vie des coccinelles 60. UGC DOCU
71 La guerre des toiles I 120 Paramounth COMD
... ... ...

On veut faire une projection des colonnes no-film et titre de la table FILM :

En langage algbrique :
R1 = PROJECTION FILM(no-film, titre)

Traduction en SQL :
SELECT FILM.no-film, FILM.titre
FROM FILM;

RSULTAT REQUTE
no-film titre
10 Camille Claudel
20 Fentre sur cour
25 Sueurs froides
50 Cendrillon
64 Super Mondet II
65 La vie des coccinelles
71 La guerre des toiles I
... ...

C.2. La slection

Permet dextraire les lignes dune table qui vrifient la ralisation dune certaine condition (on parle
parfois de critre).

Notation :
R2 = SELECTION R1(Expression conditionnelle)
R1 et R2 sont deux relations, entre parenthses figure le critre de slection.

Instructions SQL :
SELECT Nom-Table.Nom-Champ, Nom-Table.Nom-Champ
FROM Nom-Table
WHERE Critre de slection;

Oprateurs de comparaison : = != <> > >= < <=

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 3 / 10 om (2001-2005)


Exemple :
Soit la table FILM qui permet de grer une vidothque.

FILM
no-film titre dure production code-catgorie
10 Camille Claudel 150 Gaumont COMD
20 Fentre sur cour 120 Path COMD
25 Sueurs froides 115 Path COMD
50 Cendrillon 140 UGC DESA
64 Super Mondet II 10 Universal DOCU
65 La vie des coccinelles 60. UGC DOCU
71 La guerre des toiles I 120 Paramounth COMD
... ... ...

On aimerait avoir les titres des films produits par Path.

En langage algbrique :
R1 = SELECTION FILM(production = "Path")
R2 = PROJECTION R1(titre)

Traduction en SQL :
SELECT FILM.titre
FROM FILM
WHERE FILM.production = "Path";

RSULTAT REQUTE
titre
Fentre sur cour
Sueurs froides

C.3. La jointure

La jointure consiste donc combiner deux tables ligne ligne en vrifiant la concordance entre
certaines colonnes des deux tables. Autrement dit, cela permet de relier deux tables ayant un champ
commun et de faire correspondre les lignes qui ont une mme valeur.

Notation :
R3 = R1 ZY R2 (Expression conditionnelle)
Ou
R3 = JOINTURE R1.R2 (Expression conditionnelle)
R1 et R2 sont deux relations, entre parenthses figure le critre de jointure.

Instructions SQL :
SELECT Nom-Table.Nom-Champ, Nom-table.Nom-Champ
FROM Nom-Table, Nom-Table
WHERE Condition de jointure;

Oprateurs de comparaison : = != <> > >= < <=

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 4 / 10 om (2001-2005)


Exemple :
Soient les tables FILM et CATGORIE qui permettent de grer une vidothque.

FILM
no-film titre dure production code-catgorie
10 Camille Claudel 150 Gaumont COMD
20 Fentre sur cour 120 Path COMD
25 Sueurs froides 115 Path COMD
50 Cendrillon 140 UGC DESA
64 Super Mondet II 10 Universal DOCU
65 La vie des coccinelles 60. UGC DOCU
71 La guerre des toiles I 120 Paramounth COMD
... ... ...

CATGORIE
code-catgorie libell-catgorie
COMD comdie dramatique
DESA dessin anim
DOCU documentaire
... ...

On souhaiterait avoir le titre des films ainsi que les libells de leurs catgories (et non leur code).

En langage algbrique :
R1 = FILM ZY CATGORIE (FILM.code-catgorie = CATGORIE.code-catgorie)
R2 = PROJECTION R1(titre, libell-catgorie)

Traduction en SQL :
SELECT FILM.titre, CATGORIE.libell-catgorie
FROM FILM, CATGORIE
WHERE FILM.code-catgorie = CATGORIE.code-catgorie;

RSULTAT REQUTE
titre libell-catgorie
Camille Claudel comdie dramatique
Fentre sur cour comdie dramatique
Sueurs froides comdie dramatique
Cendrillon dessin anim
Super Mondet II documentaire
La vie des coccinelles documentaire
La guerre des toiles I comdie dramatique

Remarque n1 :
Il est bien videment possible de faire plusieurs jointures, autant quil y a de tables relier entre elles.
Equijointure : le pivot utilise loprateur = (jointure naturelle)
Thtajointure : le pivot utilise les oprateurs <, <=, >, >=, != ou <>

Remarque n2 :
Il est possible dutiliser des alias (pour simplifier) pour nommer une table diffremment dans la
requte.

Par exemple :
SELECT F.titre, C.libell-catgorie
FROM FILM F, CATGORIE C
WHERE F.code-catgorie = C.code-catgorie;

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 5 / 10 om (2001-2005)


C.4. Combinaison des oprateurs de base

Une requte dextraction de donnes sur une base de donnes est la plupart du temps une
combinaison astucieuse des trois oprations de base.

On peut donc selon les besoins combiner les instructions. Loprateur AND permet davoir plusieurs
conditions de slection. Linstruction ORDER BY permet de trier selon lordre dun des champs
(ASCendant ou DESCendant).

Exemple de squence doprations algbriques :


R3 = R1 ZY R2(Condition de Jointure)
R4 = SELECTION R3(Critre de slection ET Critre de slection)
R5 = SELECTION R4(Critre de slection)
R6 = PROJECTION R5(Nom-Champ, Nom-Champ, )

Exemple de squence dinstructions SQL :


SELECT Nom-Table.Nom-Champ, Nom-table.Nom-Champ
FROM Nom-Table, Nom-Table
WHERE Condition de jointure
AND Condition
ORDER BY Nom-Table.Nom-Champ ASC;

Exemple :
Soient les tables FILM et CATGORIE qui permettent de grer une vidothque.

FILM
no-film titre dure production code-catgorie
10 Camille Claudel 150 Gaumont COMD
20 Fentre sur cour 120 Path COMD
25 Sueurs froides 115 Path COMD
50 Cendrillon 140 UGC DESA
64 Super Mondet II 10 Universal DOCU
65 La vie des coccinelles 60. UGC DOCU
71 La guerre des toiles I 120 Paramounth COMD
... ... ...

CATGORIE
code-catgorie libell-catgorie
COMD comdie dramatique
DESA dessin anim
DOCU documentaire
... ...

On souhaiterait avoir le numro, le titre des films, les libells des catgories auxquelles ils
appartiennent uniquement pour les films de plus de 100 minutes. Le tout tri alphabtiquement (ordre
ascendant) selon le titre du film.

En langage algbrique :
R1 = FILM ZY CATGORIE (FILM.code-catgorie = CATGORIE.code-catgorie)
R2 = SELECTION R1(R1.Dure > 100)
R3 = PROJECTION R2(no-film, titre, libell-catgorie)

Traduction en SQL :
SELECT FILM.no-film, FILM.titre, CATGORIE.libell-catgorie
FROM FILM, CATGORIE
WHERE FILM.code-catgorie = CATGORIE.code-catgorie;
AND FILM.Dure > 100
ORDER BY FILM.titre ASC;

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 6 / 10 om (2001-2005)


RSULTAT REQUTE
no-film titre libell-catgorie
10 Camille Claudel comdie dramatique
50 Cendrillon dessin anim
20 Fentre sur cour comdie dramatique
71 La guerre des toiles I comdie dramatique
65 La vie des coccinelles documentaire
25 Sueurs froides comdie dramatique
64 Super Mondet II documentaire

Si lon avait demand un classement dans lordre inverse (descendant) :

Traduction en SQL :
SELECT FILM.no-film, FILM.titre, CATGORIE.Libell-catgorie
FROM FILM, CATGORIE
WHERE FILM.code-catgorie = CATGORIE.code-catgorie;
AND FILM.Dure > 100
ORDER BY FILM.titre DESC;

RSULTAT REQUTE
no-film titre libell-catgorie
64 Super Mondet II documentaire
25 Sueurs froides comdie dramatique
65 La vie des coccinelles documentaire
71 La guerre des toiles I comdie dramatique
20 Fentre sur cour comdie dramatique
50 Cendrillon dessin anim
10 Camille Claudel comdie dramatique

D. Autres oprateurs (ensemblistes)

D.1. Lunion (ou / or)

Lunion consiste combiner deux relations (compatibles) pour crer une


troisime relation qui contient toutes les occurrences appartenant lune ou
lautre des relations de dpart.

Notation :
R3 = R1 R2
Ou
R3 = UNION (R1, R2)

Instructions SQL :
SELECT Nom-Champ, Nom-Champ,
FROM Nom-Table1
UNION
SELECT Nom-Champ, Nom-Champ,
FROM Nom-Table2;

On peut utiliser UNION [ALL] pour avoir toutes les lignes communes aux deux tables (y compris celles
en double), sans cela les doublons sont limins.

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 7 / 10 om (2001-2005)


Exemple :
Soient les tables ANGLAIS et ESPAGN qui permettent de grer les candidats des preuves de langue.

ANGLAIS
nocandidat nomcandidat prnomcandidat numtablissement
10123 DUPONT Patrick 94010
10216 GRANGETTE Didier 75100
10309 HERISSON Patrick 94010
10405 MAGNAN Hlne 75250
10505 SERRES Sylvia 94010

ESPAGN
nocandidat nomcandidat prnomcandidat numtablissement
10025 ACQUINO Patricia 91260
10216 GRANGETTE Didier 75100
10505 SERRES Sylvia 94010

On souhaiterait obtenir la liste des candidats passant les preuves danglais ou despagnol (lunion
des deux tables) (sans doublons).

En langage algbrique :
R1 = ANGLAIS ESPAGN

Traduction en SQL :

SELECT *
FROM ANGLAIS
UNION
SELECT *
FROM ESPAGN;

RSULTAT REQUTE
nocandidat nomcandidat prnomcandidat numtablissement
10123 DUPONT Patrick 94010
10216 GRANGETTE Didier 75100
10309 HERISSON Patrick 94010
10405 MAGNAN Hlne 75250
10505 SERRES Sylvia 94010
10025 ACQUINO Patricia 91260

D.2. Lintersection (et / and)

Lintersection consiste combiner deux relations (compatibles) pour crer une


troisime relation qui contient toutes les occurrences appartenant lune et
lautre des relations de dpart.

Notation :
R3 = R1 R2
Ou
R3 = INTERSECTION (R1, R2)

Instructions SQL :
SELECT Nom-Champ, Nom-Champ,
FROM Nom-Table1
INTERSECT
SELECT Nom-Champ, Nom-Champ,
FROM Nom-Table2;

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 8 / 10 om (2001-2005)


Exemple :
Soient les tables ANGLAIS et ESPAGN qui permettent de grer les candidats des preuves de langue.

ANGLAIS
nocandidat nomcandidat prnomcandidat numtablissement
10123 DUPONT Patrick 94010
10216 GRANGETTE Didier 75100
10309 HERISSON Patrick 94010
10405 MAGNAN Hlne 75250
10505 SERRES Sylvia 94010

ESPAGN
nocandidat nomcandidat prnomcandidat numtablissement
10025 ACQUINO Patricia 91260
10216 GRANGETTE Didier 75100
10505 SERRES Sylvia 94010

On souhaiterait obtenir souhaiterait obtenir la liste des candidats passant les preuves danglais et
despagnol (lintersection des deux tables).

En langage algbrique :
R1 = ANGLAIS ESPAGN

Traduction en SQL :

SELECT *
FROM ANGLAIS
INTERSECT
SELECT *
FROM ESPAGN;

RSULTAT REQUTE
nocandidat nomcandidat prnomcandidat numtablissement
10216 GRANGETTE Didier 75100
10505 SERRES Sylvia 94010

D.3. La diffrence (non / not)

La diffrence consiste combiner deux relations


(compatibles) pour crer une troisime relation qui
contient toutes les occurrences appartenant lune des
relations et non contenues dans lautre des relations de
dpart. Deux diffrences sont possibles.

Notation :
R3 = R1 - R2 R3 = R2 R1
Ou
R3 = DIFFERENCE (R1, R2) R3 = DIFFERENCE (R1, R2)

Instructions SQL :
SELECT Nom-Champ, Nom-Champ, SELECT Nom-Champ, Nom-Champ,
FROM Nom-Table2 FROM Nom-Table1
MINUS MINUS
SELECT Nom-Champ, Nom-Champ, SELECT Nom-Champ, Nom-Champ,
FROM Nom-Table1; FROM Nom-Table2;

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 9 / 10 om (2001-2005)


Exemple :
Soient les tables ANGLAIS et ESPAGN qui permettent de grer les candidats des preuves de langue.

ANGLAIS
nocandidat nomcandidat prnomcandidat numtablissement
10123 DUPONT Patrick 94010
10216 GRANGETTE Didier 75100
10309 HERISSON Patrick 94010
10405 MAGNAN Hlne 75250
10505 SERRES Sylvia 94010

ESPAGN
nocandidat nomcandidat prnomcandidat numtablissement
10025 ACQUINO Patricia 91260
10216 GRANGETTE Didier 75100
10505 SERRES Sylvia 94010

On souhaiterait obtenir souhaiterait obtenir la liste des candidats passant les preuves danglais
seulement.

En langage algbrique :
R1 = ANGLAIS - ESPAGN

Traduction en SQL :

SELECT *
FROM ANGLAIS
MINUS
SELECT *
FROM ESPAGN;

Il est possible de combiner les oprateurs UNION, INTERSECT et MINUS, il faut pour cela utiliser des
parenthses pour dterminer les ordres de priorit de ces oprateurs.

ANGLAIS
nocandidat nomcandidat Prnomcandidat numtablissement
10123 DUPONT Patrick 94010
10309 HERISSON Patrick 94010
10405 MAGNAN Hlne 75250

Olivier Mondet
http://unidentified-one.net

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc page 10 / 10 om (2001-2005)

Vous aimerez peut-être aussi