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 10 20 25 50 64 65 71 ...

titre Camille Claudel Fentre sur cour Sueurs froides Cendrillon Super Mondet II La vie des coccinelles La guerre des toiles I ...

dure 150 120 115 140 10 60. 120

production Gaumont Path Path UGC Universal UGC Paramounth

code-catgorie COMD COMD COMD DESA DOCU DOCU 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 dure 150 120 115 140 10 60. 120

no-film 10 20 25 50 64 65 71 ...

titre Camille Claudel Fentre sur cour Sueurs froides Cendrillon Super Mondet II La vie des coccinelles La guerre des toiles I ...

production Gaumont Path Path UGC Universal UGC Paramounth

code-catgorie COMD COMD COMD DESA DOCU DOCU 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 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 dure 150 120 115 140 10 60. 120

no-film 10 20 25 50 64 65 71 ...

titre Camille Claudel Fentre sur cour Sueurs froides Cendrillon Super Mondet II La vie des coccinelles La guerre des toiles I ...

production Gaumont Path Path UGC Universal UGC Paramounth

code-catgorie COMD COMD COMD DESA DOCU DOCU 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 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 titre Camille Claudel Fentre sur cour Sueurs froides Cendrillon Super Mondet II La vie des coccinelles La guerre des toiles I REQUTE libell-catgorie comdie dramatique comdie dramatique comdie dramatique dessin anim documentaire documentaire 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 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 dure 150 120 115 140 10 60. 120

no-film 10 20 25 50 64 65 71 ...

titre Camille Claudel Fentre sur cour Sueurs froides Cendrillon Super Mondet II La vie des coccinelles La guerre des toiles I ...

production Gaumont Path Path UGC Universal UGC Paramounth

code-catgorie COMD COMD COMD DESA DOCU DOCU 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 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)

no-film 10 50 20 71 65 25 64

RSULTAT REQUTE titre libell-catgorie Camille Claudel comdie dramatique Cendrillon dessin anim Fentre sur cour comdie dramatique La guerre des toiles I comdie dramatique La vie des coccinelles documentaire Sueurs froides comdie dramatique 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; no-film 64 25 65 71 20 50 10 RSULTAT REQUTE titre libell-catgorie Super Mondet II documentaire Sueurs froides comdie dramatique La vie des coccinelles documentaire La guerre des toiles I comdie dramatique Fentre sur cour comdie dramatique Cendrillon dessin anim 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. nocandidat 10123 10216 10309 10405 10505 nomcandidat DUPONT GRANGETTE HERISSON MAGNAN SERRES ANGLAIS prnomcandidat Patrick Didier Patrick Hlne Sylvia ESPAGN prnomcandidat Patricia Didier Sylvia numtablissement 94010 75100 94010 75250 94010

nocandidat 10025 10216 10505

nomcandidat ACQUINO GRANGETTE SERRES

numtablissement 91260 75100 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; nocandidat 10123 10216 10309 10405 10505 10025 RSULTAT REQUTE nomcandidat prnomcandidat DUPONT Patrick GRANGETTE Didier HERISSON Patrick MAGNAN Hlne SERRES Sylvia ACQUINO Patricia numtablissement 94010 75100 94010 75250 94010 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. nocandidat 10123 10216 10309 10405 10505 nomcandidat DUPONT GRANGETTE HERISSON MAGNAN SERRES ANGLAIS prnomcandidat Patrick Didier Patrick Hlne Sylvia ESPAGN prnomcandidat Patricia Didier Sylvia numtablissement 94010 75100 94010 75250 94010

nocandidat 10025 10216 10505

nomcandidat ACQUINO GRANGETTE SERRES

numtablissement 91260 75100 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; nocandidat 10216 10505 RSULTAT REQUTE nomcandidat prnomcandidat GRANGETTE Didier SERRES Sylvia numtablissement 75100 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) SELECT Nom-Champ, Nom-Champ, FROM Nom-Table1 MINUS SELECT Nom-Champ, Nom-Champ, FROM Nom-Table2;

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

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. nocandidat 10123 10216 10309 10405 10505 nomcandidat DUPONT GRANGETTE HERISSON MAGNAN SERRES ANGLAIS prnomcandidat Patrick Didier Patrick Hlne Sylvia ESPAGN prnomcandidat Patricia Didier Sylvia numtablissement 94010 75100 94010 75250 94010

nocandidat 10025 10216 10505

nomcandidat ACQUINO GRANGETTE SERRES

numtablissement 91260 75100 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. nocandidat 10123 10309 10405 nomcandidat DUPONT HERISSON MAGNAN ANGLAIS Prnomcandidat Patrick Patrick Hlne numtablissement 94010 94010 75250

Olivier Mondet http://unidentified-one.net

Ch.1 - Algbre Relationnelle, Introduction au Langage SQL.doc

page 10 / 10

om (2001-2005)