Documente Academic
Documente Profesional
Documente Cultură
STAGE RENOVATION
- SQL.Chapitre 1 -
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 ).
page 1 / 10
om (2001-2005)
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 ...
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 : = != <> > >= < <=
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 ...
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 : = != <> > >= < <=
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 ...
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;
page 5 / 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 ...
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
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
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
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
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
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;
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
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
page 10 / 10
om (2001-2005)