Beruflich Dokumente
Kultur Dokumente
2 SQL
SQL
Structure de base Conditions dans le Where Expression des jointures Fonctions ensemblistes Fonctions quantifies Oprateurs ensemblistes Fonctions de calcul Partitionnement Tri du rsultat
Schmas relationnel utilis dans les exemples: Employe (NoEmp, NomE, Salaire, Annee, TelE, Nodept) Fournisseur (NumF, NomF, VilleF, AdresseF) Piece (NomP, Prix, Couleur) Livraison (#NumF, DateLiv, #NomP, Quantite)
167
SELECT correspond loprateur de projection sur la liste dattributs demande; il peut aussi tre suivi de fonctions dattributs. FROM indique les relations concernes par la requte. WHERE prcise une condition et correspond loprateur de slection.
168
172
SELECT NomF, DateLiv, Fournisseur.NumF FROM Fournisseur, Livraison WHERE Fournisseur.NumF= Livraison.NumF;
Utilisation de variables (alias) :
173
Fonctions ensemblistes
Le rsultat dune requte SELECT est un ensemble de tuples. On peut utiliser ce rsultat, avec des fonctions ensemblistes, dans un prdicat de la clause WHERE <nom_attribut> [NOT] IN ( < sous-requte > ) Evalu VRAI si nom_attribut appartient l'ensemble des rsultats de <sous-requte> Lister les pices qui nont pas t livres SELECT NomP FROM Piece P WHERE NomP NOT IN (SELECT NomP FROM Livraison);
174
Fonctions ensemblistes
Liste des fournisseurs qui ont livr la pice 'XXA2' SELECT NomF FROM Fournisseur WHERE NumF IN ( SELECT NumF FROM Livraison WHERE NomP ='XXA2' ); quivaut SELECT DISTINCT F.NomF FROM Fournisseur F, Livraison L WHERE ( F. NumF = L. NumF ) AND ( L. NomP ='XXA2' );
175
Fonctions ensemblistes
Lister les couleurs de pices livres par les fournisseurs habitant Paris SELECT DISTINCT Couleur FROM Piece WHERE NomP IN ( SELECT NomP FROM Livraison WHERE NumF IN (SELECT NumF FROM Fournisseur WHERE VilleF ='Paris')); quivaut SELECT DISTINCT Couleur FROM Piece P, Livraison L, Fournisseur F WHERE P. NomP = L. NomP AND L. NumF =F. NumF AND VilleF ='Paris';
176
Fonctions quantifies
<nom_attribut> = | <= | < | > | >= ANY ( < sous-requte > )
Evalu VRAI sil existe au moins un lment de <sous-requte> qui vrifie la comparaison
Liste des employs gagnant plus quun employ du dpartement n10 SELECT * FROM Employe WHERE salaire > ANY ( SELECT Salaire FROM Employe WHERE Nodept =10); Donner le nom de fournisseurs ayant livr la pice AAX2 SELECT nomF FROM Fournisseur WHERE numF = ANY (SELECT numF FROM Livraison WHERE NomP = AAX2); = ANY quivalent de IN
177
Fonctions quantifies
<nom_attribut> = | <= | < | > | >= ALL ( < sous-requte > ) Evalu VRAI si pour tout lment de < sous- requte >, loprateur de comparaison retourne VRAI Liste des employs gagnant plus que tous les employs du dpartement n10 SELECT * FROM Employe WHERE salaire > ALL (SELECT Salaire FROM Employe WHERE Nodept =10); Lister la plus grande quantit livre SELECT * FROM Livraison WHERE Quantite >= ALL (
178
Fonctions quantifies
[NOT] EXISTS ( < sous-requte > ) Evalu VRAI si <sous-requte> retourne au moins un lment Lister les pices qui ont t livres SELECT NomP FROM Piece P WHERE EXISTS (SELECT * FROM Livraison WHERE Livraison.NomP = P.NomP);
179
Oprateurs ensemblistes
< requte > UNION < requte > < requte > INTERSECT < requte > < requte > EXCEPT < requte > Numro des fournisseurs qui livrent la pice SSZ4 mais pas la pice A2 SELECT NumF quivaut SELECT NumF
FROM Livraison WHERE NomP ='SSZ4') EXCEPT (SELECT NumF FROM Livraison WHERE NomP ='A2'); FROM Livraison WHERE NomP ='SSZ4' AND NumF NOT IN (SELECT NumF FROM Livraison WHERE NomP ='A2');
Fonctions de calcul
Une fonction de calcul est une fonction qui sapplique sur un ensemble de tuples et qui renvoie une valeur unique. Calcul sur les valeurs prises par un attribut.
AVG ( DISTINCT | ALL nom_attribut )
moyenne des valeurs prises par nom_attribut (entier ou rel)
MAX ( nom_attribut )
maximum des valeurs prises par nom_attribut (entier, rel, caractres ou date)
MIN ( nom_attribut )
minimum des valeurs prises par nom_attribut (entier, rel, caractres ou date)
181
Fonctions de calcul
La quantit livre totale de larticle Peluche Winnie The Pooh SELECT SUM (ALL Quantite) FROM Livraison WHERE NomP = 'Peluche Winnie The Pooh'; La quantit maximale livre de larticle Peluche Winnie The Pooh SELECT MAX (Quantite) FROM Livraison WHERE NomP = 'Peluche Winnie The Pooh ';
182
Fonctions de calcul
Comptage du nombre de tuples
COUNT( * | [ ALL | DISTINCT nom_attribut ]) =
Expression arithmtique
SELECT L.NomP, Quantite * Prix FROM Livraison L, Piece P WHERE L.nomP=P.nomP;
183
Fonctions de calcul
Nombre de livraisons de la pice de nom 'xxa1' SELECT COUNT(*) FROM Livraison WHERE NomP = 'xxa1'; Nombre de couleurs diffrentes dans les pices SELECT COUNT( DISTINCT Couleur) FROM Piece;
184
Fonctions de calcul
Les fonctions de calcul peuvent tre utilises dans la clause WHERE, elles portent alors sur un SELECT Donner les noms de pice ayant fait l'objet d'au moins 10 livraisons SELECT P.NomP FROM Piece P WHERE (SELECT Count (*) FROM Livraison L WHERE P.NomP = L.NomP) >= 10);
185
Partitionnement
GROUP BY < attribut1, , attributn >
permet de partitionner la relation en sous-relations ayant les mmes valeurs sur les attributs prciss
SELECT nomP, numF, quantite FROM Livraison Sous-relation GROUP BY NomP
Sous-relation nomP A A B B B Sous-relation C numF X Y X T U V quantit 2 3 2 4 1 4
On peut alors appliquer des fonctions (dclares derrire SELECT) aux attributs de chaque sous-relation. On trouve dans le rsultat une ligne par sousrelation.
186
Partitionnement
Les fonctions AVG, SUM, MIN, MAX, COUNT, places dans la clause SELECT sappliquent chacune des sous-relations cre par le GROUP BY
SELECT NomP, COUNT(*), SUM(quantite) FROM Livraison GROUP BY NomP
Les attributs prsents aprs SELECT sont forcment prsents dans la clause GROUP BY.
nomP A B C COUNT(*) 2 3 1 SUM(quantit) 5 7 4
187
Partitionnement
La clause HAVING permet de poser une condition portant sur chacune des sous-relations gnres par le GROUP BY. Les sous-relations ne vrifiant pas la condition sont cartes du rsultat.
Liste des fournisseurs qui ont effectu plus de 3 livraisons.
SELECT NumF FROM Livraison GROUP BY NumF HAVING COUNT(*) >= 3;
188
Tri du rsultat
La clause ORDER BY permet de trier le rsultat de la requte, en fournissant la liste des attributs (ou de n de colonnes) sur lesquels effectuer le tri et en spcifiant le sens du tri (ascendant ou descendant).
Liste des employs trie par ordre alphabtique sur le nom
SELECT * FROM Employe ORDER BY NomE ASC;
Liste des employs trie sur le salaire et sur le nom par ordre dcroissant
SELECT * FROM Employe ORDER BY Salaire, NomE DESC;
189
190
(Fournisseur, DateLivraison)
AS
191
Rfrences
J. Akoka, I. Comyn-Wattiau. Conception des Bases de Donnes Relationnelles en Pratique Concepts, Mthodes et Cas Corrigs. Vuibert Informatique. 2001. Flory, F. Forest. Les Bases de Donnes Relationnelles. Economica. 1996. C.J. Date. Introduction aux Bases de Donnes. Vuibert Informatique. 2000. G. Gardarin. Bases de Donnes Objet et Relationnel. Eyrolles. 2001. http://georges.gardarin.free.fr/
192