Vous êtes sur la page 1sur 70

4.

La cration dune base de donnes relationnelle

Langage de dfinition Langage de manipulation

Prsentation de SQL
SQL (Structured Query Language) Langage assertionnel permettant :
interrogation des donnes (requtes) manipulation des donnes (insertion, suppression, mise jour) dfinition des donnes et des contraintes sur celles-ci dfinition des vues et dindex

Diffrentes normes ISO : SQL-86; SQL-89; SQL-92; SQL-99


ISI 4 2

Langage de dfinition des donnes


Create table Alter table Drop table Insert into Update Delete from Create view Drop view Create index Drop index

ISI 4

Cration de relation: CREATE TABLE


Instruction du langage de dfinition permettant de dcrire la structure dune relation. CREATE TABLE <nom_relation> (<lment de relation> <, lment de relation>* <, contrainte de relation>* ); <lment de relation> ::= <nom_attribut> <type de donnes> [ <contrainte dattribut>*] <type de donnes> ::= VARCHAR <longueur> | INT | REAL | DATE Chaque relation est dfinie par un nom de relation et une liste dattributs Chaque attribut est dfini par un nom d attribut et un type de donnes
ISI 4 4

Contrainte dattribut
Concerne un seul attribut
valeur NULL impossible : NOT NULL Attribut cl : PRIMARY KEY Unicit de l attribut : UNIQUE Valeur par dfaut : DEFAULT <valeur> Contrainte rfrentielle : REFERENCES <relation rfrence> [ (<attribut rfrenc>) ]

ISI 4

Contrainte de relation
Concerne plusieurs attributs
Cl compose :
PRIMARY KEY (nom_attribut [, nom_attribut]* )

Contrainte rfrentielle :
FOREIGN KEY (nom_attribut [, nom_attribut]* ) REFERENCES nom de relation [(nom_attribut [, nom_attribut]* ) ]

ISI 4

Exemple de cration de relation


Create Table Livraison (
NumF Int NOT NULL references Fournisseur, NumP Int NOT NULL references Piece, DateLiv Date, Qt Int , Primary key (NumF, NumP, DateLiv)

) ;
ISI 4 7

Modification de relation: ALTER TABLE


Ajout dune colonne une table existante ( la fin de la relation)
ALTER TABLE <nom_relation> ADD(<lment de relation> <, lment de relation>*);

Exemple:
Avant: Client (numcli, nom, prenom, adresse) Alter table client Add (telephone char(10), Nbemprunt smallint); Aprs: Client (Aprs: numcli, nom, prenom, adresse, telephone, nbemprunt)
ISI 4 8

Suppression de relation: DROP TABLE


DROP TABLE <nom_relation>; Exemple: DROP TABLE client; Effets:
Suppression de la table Suppression du catalogue dfini sur cette table Suppression des vues dfinies sur cette table Suppression des index dfinis sur cette table
ISI 4 9

Insertion de tuple : INSERT INTO


INSERT INTO <nom_relation> [( nom_attribut [, nom_attribut]* )] VALUES ( valeur [, valeur]* ) ; Exemple : INSERT INTO Pice (NumP, NomP) VALUES (3, Chaise ); Les valeurs doivent tre fournies dans lordre de dclaration des attributs de la liste ou, sil ny en na pas, du CREATE de la relation. Si la liste dattributs est incomplte, les attributs non spcifis sont insrs avec des valeurs NULL.
ISI 4 10

Insertion dun ensemble de tuples calculs partir de la BD


La clause VALUES est remplace par un SELECT Exemple: Insert Into Fournisseurs-paris (Select * From Fournisseur Where VilleF = Paris);
ISI 4 11

Modification de tuple: UPDATE


UPDATE nom_relation SET nom_attribut = <expression de valeur> [ , nom_attribut = <expression de valeur> ]* [ WHERE <condition de recherche> ];

La clause WHERE permet de slectionner les tuples mettre jour


Exemple : Update Fournisseur Set VilleF = St.Petersburg Where VilleF = Leningrad ;

<expression de valeur> peut tre : NULL, une constante ou une expression arithmtique contenant des attributs de la table modifier
ISI 4 12

Modification de tuples (exemple)


Update Pice Set Prix = Prix * 1.05 Where Prix <= 1000;

Update Pice Set Prix = (Select Prix From Pice where NumP =52) Where NumP = 23;

ISI 4

13

Suppression de tuples: DELETE FROM


DELETE FROM <nom_relation> [WHERE <condition de recherche>]; Exemple: Delete From Fournisseur Where NomF = Gant; Exemple: Pice (NomP, Prix, Couleur, NomF) Delete From Pice Where NomF IN (Select NomF From Fournisseur Where NomF = Gant);
ISI 4 14

5. Linterrogation dune base de donnes relationnelle

5.1 Algbre relationnelle 5.2 SQL

5.1 Algbre relationnelle

Algbre relationnelle
C'est un langage de manipulation de donnes Permet de dfinir comment interroger une Base de Donnes Facile traduire en SQL (langage standard des Bases de Donnes) Objets manipuls : Les relations Six oprateurs de base
oprateurs ensemblistes oprateurs spcifiques
ISI 4 17

Les oprateurs de lalgbre relationnelle


Oprateurs unaires
Projection Restriction

Oprateurs binaires (
Produit Cartsien Jointure Union Diffrence Division Intersection
ISI 4 18

Les oprateurs de lalgbre relationnelle


Oprateurs de base
Union Diffrence Produit cartsien Projection Restriction

Oprateurs complmentaires
Jointure Division Intersection
ISI 4 19

Toute requte (interrogation) une base de donnes relationnelle se traduit par une suite de transformations de tables de la base (ou des tables intermdiaires) rsultant de lapplication des oprateurs de lalgbre.

ISI 4

20

Projection
Opration portant sur une relation R1 et sur un ensemble dattributs A1, A2, , Ak de R1 qui produit une relation R2 rduite aux attributs mentionns en oprande. Le schma de R2 est inclus dans le schma de R1. Les tuples en double sont supprims

ISI 4

21

Projection (notation)
Notation algbrique:
R2 = PA1,..., Ak(R1)
R2

Notation graphique:

Notation fonctionnelle:
R2 = Project(R1/A1,,Ak)
A 1, ..., A k

R1

Projection

ISI 4

22

Projection (exemple)
EMPLOYE NoEmp 1045 2067 0456 0278 0789 Nom Dupond Dupont Martin Martin Blanc Anne 1978 1965 1981 1987 1981 NoDep 03 06 03 05 06

AN-EMBAUCH Nom Anne 1978 1965 1981 1987 1981


23

AN-EMBAUCH = P Nom, Anne(EMPLOYE)

Dupond Dupont Martin Martin Blanc

ISI 4

Restriction
opration portant sur une relation R1 produisant une relation R2 de mme schma ayant pour tuples ceux de R1 vrifiant la condition (prdicat) prcise en oprande. Prdicat:
Les conditions de base sont de la forme <attribut> <oprateur> <valeur> avec oprateur { =,, <, , >, } Il est possible de composer plusieurs conditions de base laide des oprateurs boolens de disjonction (, OU), conjonction (, ET), ngation (, NON).
ISI 4 24

Restriction (notation)
Notation algbrique: R2 = prdicat(R1) Notation fonctionnelle:
R2 = RESTRICT (R1/prdicat)
R1

Notation graphique:
R2

prdicat

Slection

ISI 4

25

Restriction (exemple)
Liste des employs du dpartement 03 embauchs avant l'anne 1980 ANCIEN = Anne<1980 NoDep = 03 (EMPLOYE)
EMPLOYE NoEmp 1045 2067 0456 0278 0789 Nom Dupond Dupont Martin Martin Blanc Anne 1978 1965 1981 1987 1981 NoDep 03 06 03 05 06

ANCIEN NoEmp 1045


ISI 4

Nom Dupond

Anne 1978

NoDep 03
26

Union
opration portant sur deux relations R1 et R2 de mme schma consistant construire une relation de mme schma R3 ayant pour tuples ceux appartenant R1 ou R2 ou aux deux. Oprateur commutatif
R1 R2 = R2 R1

ISI 4

27

Union (notation)
Notation algbrique:
R3 = R1 R2
R3

Notation graphique:

Notation fonctionnelle:
R3 = Union (R1, R2)
R1

R2

Union

ISI 4

28

Union (exemple)
EMPLOYE1 (NoEmp, 1045 2067 0456 EMPLOYE2 (NoEmp, 1045 0278 0789 Nom, Dupond Dupont Martin Anne, 1978 1965 1981 NoDep) 03 06 03

Nom, Dupond Martin Blanc

Anne, 1978 1987 1981

NoDep) 03 05 06

EMPLOYE = EMPLOYE1 EMPLOYE2 EMPLOYE (NoEmp, 1045 2067 0456 0278 0789 ISI 4 Nom, Dupond Dupont Martin Martin Blanc Anne, 1978 1965 1981 1987 1981 NoDep) 03 06 03 05 06 29

Diffrence
opration portant sur deux relations R1 et R2 de mme schma consistant construire une relation de mme schma R3 ayant pour tuples ceux appartenant R1 et nappartenant pas R2. Oprateur non commutatif
R1 - R2 R2 - R1

ISI 4

30

Diffrence (notation)
Notation algbrique:
R3 = R1 - R2
R3

Notation graphique:

Notation fonctionnelle:
R3 = Diff (R1, R2)
R1

R2

Diffrence

ISI 4

31

Diffrence (exemple)
EMPLOYE1 (NoEmp, 1045 2067 0456 EMPLOYE2 (NoEmp, 1045 0278 0789 Nom, Dupond Dupont Martin Anne, 1978 1965 1981 NoDep) 03 06 03

Nom, Dupond Martin Blanc

Anne, 1978 1987 1981

NoDep) 03 05 06

EMPLOYE3 = EMPLOYE1 - EMPLOYE2 EMPLOYE3 (NoEmp 2067 0456


ISI 4

Nom Dupont Martin

Anne 1965 1981

NoDep 06 03
32

Intersection
opration portant sur deux relations R1 et R2 de mme schma, consistant construire une relation de mme schma R3 ayant pour tuples ceux appartenant la fois R1 et R2. Oprateur commutatif
R1 R2 = R2 R1

ISI 4

33

Intersection (notation)
Notation algbrique:
R3 = R1 R2
R3

Notation graphique:

Notation fonctionnelle:
R3 = INTER (R1, R2)
R1

R2

Intersection

ISI 4

34

Intersection (exemple)
EMPLOYE1 (NoEmp, 1045 2067 0456 EMPLOYE2 (NoEmp, 1045 0278 0789 Nom, Dupond Dupont Martin Anne, 1978 1965 1981 NoDep) 03 06 03

Nom, Dupond Martin Blanc

Anne, 1978 1987 1981

NoDep) 03 05 06

EMPLOYE4 = EMPLOYE1 EMPLOYE2 EMPLOYE4 (NoEmp 1045


ISI 4

Nom Dupond

Anne 1978

NoDep 03
35

Produit cartsien
opration portant sur deux relations R1 et R2 consistant construire une relation R3 ayant pour schma la concatnation de celui de R1 avec celui de R2 et pour tuples toutes les combinaisons des tuples de R1 et R2. Oprateur commutatif
R1 R2 = R2 R1

ISI 4

36

Produit cartsien (notation)


Notation algbrique:
R3 = R1 x R2
R3

Notation graphique:

Notation fonctionnelle:
R3 = PRODUCT (R1, R2)
a b c x y a a b b c c x y x y x y

X
R1 R2

R2

R1
Produit Cartsien

ISI 4

37

Produit cartsien (exemple)


Employ3 (NoEmp 2067 0456 Dpartement (NoDep 03 06 Nom Dupont Martin Anne 1965 1981 NoDep) 06 03

Intitul Comptabilit Informatique

Taille) 6 10

RES = EMPLOYE1 X DEPARTEMENT

Res (NoEmp 2067 2067 0456 0456


ISI 4

Nom Dupont Dupont Martin Martin

Anne 1965 1965 1981 1981

NoDep 06 06 03 03

NoDep 03 06 03 06

Intitul Comptabilit Informatique Comptabilit Informatique

Taille) 6 10 6 10
38

Jointure
opration portant sur deux relations R1 et R2 consistant construire une relation R3 ayant pour schma la concatnation de celui de R1 et de R2 et pour tuples les tuples du produit cartsien de R1 par R2 vrifiant le prdicat de jointure. Oprateur commutatif
R1 >< prdicat R2 = R2 >< prdicat R1

Prdicat :

ISI 4

<attribut1> <oprateur> <attribut2> o attribut1 R1 et attribut2 R2 avec oprateur { =,, <, , >, } Il est possible de composer plusieurs conditions de base laide des oprateurs boolens de disjonction (, OU), conjonction (, ET), ngation (, NON).

39

Jointure (notation)
Notation algbrique:
R3 = R1 >< prdicat R2
R3

Notation graphique:

Notation fonctionnelle:
R3 = Join (R1,R2/prdicat)
R1
a a1 a2 a3 a3 b b c c1 c2 c3 a b c b1 b1 b1 b2 b2 JN b3 b4 a1 b1 c1 a2 b1 c1 a3 b2 c2

prdicat R2

R1

R2

Jointure naturelle

ISI 4

40

Jointure (exemple equi-joinure)


Prdicat: critre de jointure sur attributs de types comparables avec le comparateur galit
Employe ( nempl, 141 36 durand 251 Employe >< nom_e, dupond tours parent Chef age_e, 40 40 25 nchef_e, nchef, 500 500 500 500 600 600 nom_c, albert albert jacquet age_c ) 50 50 40 ville_e, paris 40 agen age_e, 40 500 25 nchef_e) 500 60

(nchef_e = nchef)

( nempl, nom_e, 141 dupond 36 durand 251 parent

ville_e, paris tours agen

ISI 4

41

Jointure (exemple teta-jointure)


Prdicat: critre de jointure sur attributs de types comparables avec comparateur diffrent de l'galit (, >, <, , , )
Employe ( nempl, nom_e, ville_e, age_e, nchef_e) 141 dupond paris 40 500 36 durand tours 40 500 251 parent agen 25 600 27 barbier paris 53 500 125 lefevre paris 30 523 208 legrand evry 39 523 Employe >< (nchef_e = nchef age_e > age_c) Chef ( nempl, nom_e, 27 barbier 208 legrand
ISI 4

un

ville_e, age_e, paris 53 evry 39

nchef_e, 500 523

nchef, 500 523

nom_c, age_c ) albert 0 durieux 35


42

Jointure (exemple jointure naturelle)


Prdicat : galit des attributs communs (mme nom) aux deux relations
EMPLOYE NoEmp Nom 1045 Dupond 2067 Dupont 0456 Martin 0278 Martin 0789 Blanc Anne 1978 1965 1981 1987 1981 NoDep 03 06 03 05 06 DEPARTEMENT NoDep Intitul 03 Compta 06 Info 05 Achats

Taille 6 10 3

NoResp 0456 1249 0278

INFO-EMP = EMPLOYE >< DEPARTEMENT


JN INFO-EMP NoEmp Nom 1045 Dupond 2067 Dupont 0456 Martin 0278 Martin 0789 Blanc ISI 4 Anne 1978 1965 1981 1987 1981 NoDep 03 06 03 05 06 Intitul Compta Info Compta Achats Infor Taille 6 10 6 3 10 NoResp 0456 1249 0456 0278 1249

Schma de R3 : on ne garde quune seule fois les attributs communs


43

Division
Le quotient de la relation R1(A1,A2,,An) par la sous-relation R2 de schma R2(Ap+1,Ap+2,An) est la relation R3(A1,A2,,Ap) forme de tous les tuples qui concatns chacun des nuplets de R2 donne toujours un tuple de R1.

Oprateur non commutatif


R1 R2 R2 R1
ISI 4 44

Division (notation)
Notation algbrique:
R3 = R1 R2
R3

Notation graphique:

Notation fonctionnelle:
R3 = DIVISION (R1,R2)
R1

R2

ISI 4

45

5.2 SQL

SQL
Structure de base Conditions dans le Where Expression des jointures Fonctions ensemblistes Fonctions quantifies Oprateurs ensemblistes Fonctions de calcul Partionnement Tri du rsultat

Schmas de relations utiliss dans les exemples:


Employ (NoEmpl, NomE, Salaire, Anne, TlE, Nodept) Fournisseur (NomF, VilleF, AdresseF) Pice (NomP, Prix, Couleur)
ISI 4 47

Structure de base des requtes


SELECT * ou < liste dattributs afficher> FROM < Nom des relations utilises> [ WHERE < condition > ] ;
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.
ISI 4 48

Structure de base des requtes


Liste des noms et villes des fournisseurs
SELECT NomF, VilleF FROM Fournisseur;

limination des tuples en double dans le rsultat : mot-cl DISTINCT Liste de toutes les villes des fournisseurs
SELECT DISTINCT VilleF FROM Fournisseur;

Liste des fournisseurs habitant Londres et ceux habitant Paris


SELECT DISTINCT NomF FROM Fournisseur WHERE ( VilleF = Londres ) OR ( VilleF = Paris ) ;

Le symbole * permet de slectionner tous les attributs de la relation SELECT * FROM Fournisseur;
ISI 4 49

Conditions dans le WHERE


expression logique avec des oprateurs NOT, AND, OR. comparaison avec des oprateurs : =, <>, >,<, >=, <=
SELECT NomF, VilleF FROM Fournisseur WHERE NomF <> Carrefour AND VilleF <> Paris;

test dintervalle BETWEEN permettant de vrifier si la valeur dun attribut est comprise entre deux constantes
SELECT NomE FROM Employ WHERE Anne BETWEEN 22-Jun-2003 AND 25-sep-2003;

ISI 4

50

Conditions dans le WHERE


comparaison de texte LIKE permettant de vrifier si un attribut de type chane de caractres contient une ou plusieurs sous-chanes; _ remplace un caractre, % remplace une chane de caractres,
SELECT VilleF FROM Fournisseur WHERE VilleF LIKE Saint% ; LIKE _%a_% ;

test de valeur nulle, NULL signifiant que la valeur est inconnue,


SELECT * FROM Employ WHERE TlE IS NULL;
ISI 4 51

Conditions dans le WHERE


test dappartenance IN qui permet de vrifier si la valeur dun attribut appartient une liste de constantes
SELECT * FROM Fournisseur WHERE VilleF IN ( Paris , Londres );

ISI 4

52

Expression des jointures


On slectionne des tuples du produit cartsien des relations cites dans la clause FROM, le WHERE permet dexprimer les prdicats de jointure. Noms des fournisseurs qui ont des livraisons et date de ces livraisons
SELECT Fournisseur.NomF, DateLiv FROM Fournisseur, Livraison WHERE Fournisseur.NomF = Livraison. NomF ;

Utilisation de variables :
SELECT F.NomF, L.DateLiv FROM Fournisseur F, Livraison L WHERE F.NomF = L.NomF ;
ISI 4 53

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 > ) valu VRAI si nom_attribut appartient l ensemble des rsultats de <sous-requte> Ex: Lister les pices qui nont pas t livres
SELECT NomP FROM Pice P WHERE NomP NOT IN (SELECT NomP FROM Livraison);
ISI 4 54

Fonctions ensemblistes
Liste des fournisseurs qui ont livr la pice XXA2
SELECT NomF FROM Fournisseur WHERE NomF IN ( SELECT NomF FROM Livraison WHERE NomP = XXA2 );

quivaut
SELECT DISTINCT F. NomF FROM Fournisseur F, Livraison L WHERE ( F. NomF = L. NomF ) AND ( L. NomP = XXA2 );
ISI 4 55

Fonctions ensemblistes
Lister les couleurs de pice livres par les fournisseurs habitant Paris
SELECT DISTINCT Couleur FROM Pice WHERE NomP IN (SELECT NomP FROM Livraison WHERE NomF IN (SELECT NomF FROM Fournisseur WHERE VilleF = Paris ));

quivaut
SELECT DISTINCT Couleur FROM Pice P, Livraison L, Fournisseur F WHERE P. NomP = L. NomP AND L. NomF =F. NomF AND VilleF = Paris ;

ISI 4

56

Fonctions quantifies
nom_attribut = | <= | < | > | >= ANY ( < sous-requte > ) valu VRAI sil existe au moins un lment de <sousrequte> qui vrifie la comparaison Donner les noms de fournisseurs ayant livr la pice AAX2
SELECT NomF FROM Fournisseur WHERE NomF = ANY (SELECT NomF FROM Livraison WHERE NomP =AAX2);

ISI 4

57

Fonctions quantifies
nom_attribut = | <= | < | > | >= ALL ( < sous-requte > ) valu VRAI si pour tout lment de < sous- requte >, loprateur de comparaison retourne VRAI

Lister la plus grande quantit livre


SELECT * FROM Livraison WHERE Quantit >= ALL (SELECT Quantit FROM Livraison);

ISI 4

58

Fonctions quantifies
[NOT] EXISTS ( < sous-requte > ) valu VRAI si <sous-requte> retourne au moins un lment

Lister les pices qui ont t livres


SELECT NomP FROM Pice P WHERE EXISTS (SELECT * FROM Livraison WHERE Livraison.NomP = P.NomP);
ISI 4 59

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 NomF quivaut FROM Livraison WHERE NomP = SSZ4) EXCEPT (SELECT NomF FROM Livraison WHERE NomP = A2); SELECT NomF FROM Livraison WHERE NomP = SSZ4 AND NomF NOT IN SELECT NomF FROM Livraison WHERE NomP = A2);

ISI 4

60

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 valeurs prises par nom_attribut (entier ou rel) SUM ( DISTINCT | ALL nom_attribut ) = somme valeurs prises par nom_attribut (entier ou rel) MAX ( nom_attribut ) = maximum des valeurs prises nom_attribut (entier, rel, caractres ou date) MIN ( nom_attribut ) = minimum des valeurs prises nom_attribut (entier, rel, caractres ou date) des des par par

ISI 4

61

Fonctions de calcul
La quantit livre des Pentium III
SELECT SUM (ALL Quantit) FROM Livraison WHERE NomP = Pentium III ;

La livraison maximale de Pentium III


SELECT MAX (Quantit) FROM Livraison WHERE NomP = Pentium III

ISI 4

62

Fonctions de calcul
Comptage du nombre de tuples
COUNT( * | [ ALL | DISTINCT nom_attribut ]) = nombre de valeurs de lensemble rsultat
dans le cas de * : y compris les valeurs nulles avec DISTINCT : sans les doublons avec ALL : avec les doublons

Expression arithmtique
SELECT NumLiv, NomP, Quantit * Prix FROM Livraison, Pice WHERE L.nump=P.nump

ISI 4

63

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 Pice

ISI 4

64

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
ISI 4 65

Partitionnement
GROUP BY < attribut1, , attributn > permet de partitionner la relation en sous-relations ayant les mmes valeurs sur les attributs prciss : on peut alors appliquer des fonctions (dclares derrire SELECT) aux attributs NomP NomF Quantit de chaque sous-relation.
a sous-relation a b sous-relation sous-relation b b c x y x t u y 5 1 1 5 1 4

SELECT... FROM Livraison GROUP BY NomP

On trouve dans le rsultat une ligne par sous-relation.


ISI 4 66

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(Quantit) FROM Livraison NomP COUNT(*) GROUP BY NomP
a c 2 3 1 b SUM(Quantit) 6 7 4

Les attributs prsents aprs SELECT sont forcment prsents dans la clause GROUP BY.
ISI 4 67

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 NomF FROM Livraison GROUP BY NomF HAVING COUNT(*) >= 3

ISI 4

68

Tri du rsultat
La clause ORDER BY permet de trier le rsultat de la requte, en fournissant la liste des attributs (ou de ns 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
ISI 4 69

Forme gnrale dune requte SQL


5 SELECT attributs rsultats [avec fonctions] 1 FROM relations utilises 2 [WHERE condition de slection indpendante du GroupBy] 3 [GROUP BY attributs de partitionnement ] 4 [HAVING condition de slection portant sur les agrgats] 6 [ORDER BY critre de tri du rsultat]
ISI 4 70