Sunteți pe pagina 1din 42

III.

Les langages
d'interrogation

Version: 9.2011
manuel labor par
Jean-Marie Ottel, LTECG
e-mail : jean-marie.ottele@education.lu

Informatique 13eCG : SGBD Les langages dinterrogation

III. Les langages d'interrogation


Un langage dinterrogation permet d'extraire les donnes d'un systme de gestion de bases de donnes laide de
requtes (e : queries) formules.

4
3
2
1

ZORRO

3
Nom: SCHMIT
Ville: Luxembourg

SCHMIT

1
Nom: DUPONT
Ville: Luxembourg

MULLER
DUPONT

PERSONNES

PERSONNES

Il existe 2 langages d'interrogation (e : query language) standard pour les SGBD relationnels :

SQL

QBE

SQL = Structured Query Language


(Langage d'interrogation structur)

QBE = Query By Example


(Interrogation par l'exemple)

SQL est un langage textuel aux rgles syntaxiques prcises.


SQL a t dvelopp pour le systme R dIBM. Il a t
ensuite adopt comme norme de langage de manipulation de
bases de donnes et a t repris dans la quasi-totalit des
SGBD.

QBE est un langage visuel interface graphique


dvelopp par IBM. Pour manipuler les donnes
lutilisateur na qu remplir les champs prdfinis sur
lcran.

La structure de base des requtes crites en SQL:


SELECT <liste de champs>
FROM <liste de tables>
WHERE <condition>

Champ/Field
Table/Table
Tri/Sort
Afficher/Show
Critre/Criteria

Ces 2 langages relationnels ont en commun d'tre non-procduraux, c.--d. l'utilisateur indique uniquement le
rsultat qui l'intresse sans prciser comment procder pour y parvenir.
SQL et QBE peuvent cependant possder quelques particularits selon le SGBD utilis.

Sources :

SQL2 de C. Mare et G. Ledant - Edition Armand Colin ISBN : 2-200-21411-1


Informatique applique la gestion de C. Moine et B. Herz Edition Foucher ISBN : 2-216-03481-9

- page 2 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Syntaxe SQL
Tableau des commandes:

SQL interactif
LDD

LMD

LCD

CREATE
DROP
ALTER

INSERT
DELETE
UPDATE
SELECT

GRANT
REVOKE
CONNECT
COMMIT
ROLLBACK
SET

SQL intgr

SQL dynamique

DECLARE
CURSOR
FETCH

PREPARE
DESCRIBE
EXECUTE

LDD:

Langage de dfinition des donnes

(Data Definition Language, DDL)

LMD:

Langage de manipulation des donnes

(Data Manipulation Language, DML)

LCD:

Langage de contrle des donnes

(Data Control Language, DCL)

Trait en cours: LMD

Crer une requte


Excuter une requte

- page 3 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Table : client
numcli

nom

adresse

localit

datenaiss

mari nbrenfants

Schmit

9 Rue G-D Charlotte

Mersch

20.04.77

oui

Duront

101 Boulevard Royal

Luxembourg

non

Dupont

33 Rue de lAlzette

Mersch

30.12.78

oui

Muller

6 Rue de Schouweiler

Hautcharage

11.11.79

oui

Zorro

32 Rue Adolphe

Ptange

04.04.77

oui

Adam

1 Rue du 9 Mai 1944

Howald

05.04.77

non

Maier

10 Avenue de la Gare

Mersch

06.12.77

non

Schmit

234 Rue de Luxembourg

Hautcharage

30.10.81

non

Schmit

7 Rue de la Gare

Mersch

20.05.64

oui

Crer la structure de la table en choisissant les types appropris. Entrer les donnes.

Nom champ

Type

- page 4 -

Longueur

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

1. La projection
La projection permet de ne conserver que les champs (colonnes) intressants.
Exemple 1: Afficher le nom et la localit de tous les clients.

SQL

QBE
Champ/Field

Table/Table
Tri/Sort
Afficher/Show
Critre/Criteria

Rsultat de la requte :

Exemple 2: Afficher tous les champs de tous les clients.

SQL

QBE

Champ/Field

Table/Table

Tri/Sort
Afficher/Show

Critre/Criteria

Rsultat de la requte :

- page 5 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

2. La slection
La slection permet de ne conserver que les enregistrements (lignes) respectant une condition vrifie.

a. La formulation des conditions


La forme dune condition dpend du type du champ:
Type du champ
caractre/texte

Exemple: Affichez la liste des clients


habitant Luxembourg

Condition

nhabitant pas Luxembourg


numrique

ayant 2 enfants
ayant plus de 2 enfants

logique/boolen

tant maris
n'tant pas maris

date

ns le 5 avril 1977
ns avant le 5 avril 1977

Attention :

au format numrique pour le sparateur dcimal : .


au format date : .

b. Les oprateurs de comparaison


gal ()
......
suprieur (>)
......
suprieur ou gal () ......

diffrent de ()
infrieur (<)
infrieur ou gal ()

......
......
......

Exemple 1: Afficher le nom de tous les clients habitant Mersch.

SQL :

.
.
.
.

Rsultat de la requte :

- page 6 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

c. Les oprateurs logiques


Les oprateurs logiques permettent de crer des requtes composes ou permettent la ngation d'une condition.

Loprateur NOT
Loprateur NOT inverse la valeur dune condition.

Exemple 1: Afficher le nom et la localit des clients nhabitant pas Mersch (utiliser NOT).
SQL :

.
.
.
.

Rsultat de la requte :

Exemple 2: Afficher le nom des clients tant clibataires.


SQL :

.
.
.
.

Rsultat de la requte :

- page 7 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Loprateur AND
Loprateur AND permet de ne considrer les enregistrements vrifiant simultanment les deux conditions unies par
un ET logique.

Exemple 1: Afficher le nom des clients maris habitant Mersch.


SQL :

.
.
.
.

Rsultat de la requte :

Exemple 2: Afficher le nom, la localit et le nombre denfants des clients ayant 1 2 enfants.
SQL :

.
.
.
.

Rsultat de la requte :

Exemple 3: Afficher le nom et la localit des clients habitant Mersch et Ptange.


SQL :

.
.
.
.

Rsultat de la requte :

Remarque :

- page 8 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Loprateur OR
Loprateur OR permet de considrer les enregistrements vrifiant une premire condition et/ou ceux dune
deuxime condition.

Exemple 1: Afficher le nom et la localit des clients habitant Mersch ou Ptange.


SQL :

.
.
.
.

Rsultat de la requte :

Exemple 2: Afficher le nom des clients ayant 1 ou 2 enfants.


SQL :

.
.
.

Rsultat de la requte :

- page 9 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

d. Lindtermination dun champ


Tout champ ayant un contenu indtermin possde la valeur NULL.

SQL

Exemple 1: Afficher le nom des clients qui nont pas donn des renseignements concernant leur date de naissance.
SQL :

.
.
.

Rsultat de la requte :

Exemple 2: Afficher le nom des clients qui ont donn des renseignements concernant leur date de naissance.
SQL :

.
.
.

Rsultat de la requte :

Exemple 3: Afficher le nom des clients qui nont pas denfants.


SQL :

.
.
.

Exemple 4: Afficher le nom des clients qui nont pas donn des renseignements concernant le nombre denfants.
SQL :

.
.
.

- page 10 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

e. Les caractres gnriques / les filtres


Les caractres gnriques (e: jokers ; d : Platzhalter) permettent de remplacer des caractres inconnus lors d'une
recherche. On ne peut utiliser ces caractres gnriques que sur des champs de type texte et heure/date.

SQL

?
_
*
%
Remarque:

Le point d'interrogation reprsente n'importe quel caractre situ cet endroit.


Par exemple,

Dupon? trouvera: Dupong, Dupond, Dupont, etc.


Du?ont trouvera: Dumont, Dupont, Duront, etc.
????? trouvera tous les mots de 5 caractres

L'astrisque reprsente aucun ou plusieurs caractres.


Par exemple,

Luxemb* trouvera: Luxembourg, Luxemburg, Luxemburgo, etc.


*bourg trouvera: Bettembourg, Hambourg, Luxembourg, etc.
*t*
trouvera tous les mots contenant au moins un t

Lorsqu'on veut utiliser le point d'interrogation (?) ou l'astrisque (*) dans sa fonction propre, alors
il faut utiliser: ...................................................

Quelle est la diffrence entre: WHERE nom = "Htel du Parc *" et WHERE nom LIKE "Htel du Parc *" ?
..
..

Exemple 1: Afficher les localits des clients habitant dans une localit commenant avec H .

SQL
..
..
..
..

Rsultat de la requte :

- page 11 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exemple 2: Afficher tous les clients habitant dans une localit contenant la lettre h .
SQL :

.
.
.

Rsultat de la requte :

Exemple 3: Afficher les localits ayant 6 lettres.


SQL :

.
.
.

Rsultat de la requte :

Exemple 4: Afficher les localits ayant comme 4e lettre un a .


SQL :

.
.
.

Rsultat de la requte :

Exemple 5: Afficher les localits nayant pas comme 4e lettre un a .


SQL :

.
.
.

Rsultat de la requte :

- page 12 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exemple 6: Afficher le nom des clients ayant comme dernire lettre un t .


SQL :

.
.
.

Rsultat de la requte :

Exemple 7: Afficher le nom des clients ayant leur adresse dans un boulevard.
SQL :

.
.
.

Rsultat de la requte :

Exemple 8: Afficher toutes les donnes des clients habitant dans une localit contenant 2 fois la lettre h .
SQL :

.
.
.

Rsultat de la requte :

Exemple 9: Afficher le nom de tous les clients ayant dans leur nom 1 ou plusieurs caractres prcdant la premire
lettre a .
SQL :

.
.
.

Rsultat de la requte :

Exemple 10: Afficher les localits de tous les clients habitant dans une localit comportant uniquement un h .
SQL :

.
.
.

Rsultat de la requte :

- page 13 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

3. Comparaison une fourchette de valeurs


SQL
Loprateur BETWEEN ... AND permet de slectionner les enregistrements dont le champ spcifi contient une
valeur dans un intervalle dtermin.
Exemple 1 : Afficher le nom et le nombre denfants des clients ayant 1 3 enfants.
SQL :

.
.
.

Rsultat de la requte :

Exemple 2 : Afficher le nom et le nombre denfants des clients nayant pas 1 3 enfants.
SQL :

.
.
.

Rsultat de la requte :

Exemple 3: Afficher le nom et la date de naissance des clients ns entre le 12.2.77 et le 31.12.79.
SQL :

.
.
.

Rsultat de la requte :

Exemple 4 : Afficher le nom et la date de naissance des clients ns entre le 12.2.77 et le 31.12.79 (sans BETWEEN).
SQL :

.
.
.

- page 14 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

4. Comparaison une liste de valeurs


SQL
Loprateur IN permet de slectionner les enregistrements dont le champ spcifi contient une valeur apparaissant
dans la liste de valeurs suivant loprateur.

Exemple 1 : Afficher le nom et le nombre denfants des clients ayant 0, 2 ou 4 enfants. (avec IN)
SQL :

.
.
.

Refaire le mme nonc sans IN :


SQL :

.
.
.

Rsultat de la requte :

Remarque :

Exemple 2: Afficher le nom et la localit des clients habitant Howald, Mersch ou Ptange.
SQL :

.
.
.

Rsultat de la requte :

Exemple 3: Afficher le nom et la localit des clients nhabitant pas Howald, Mersch ou Ptange.
SQL :

.
.
.

Rsultat de la requte :

- page 15 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

5. La priorit des oprateurs logiques


Lordre dexcution des expressions est dfini par la priorit des oprateurs :
SQL effectue dabord les comparaisons (=, <>, <, >, <=, >=),
puis les NOT, puis les AND et en dernier les OR (et ceci de la gauche vers la droite).
En cas de doute, il est conseill demployer des parenthses afin de grouper les expressions.
p. ex. C1 OR C2 AND (C3 OR C4)
Priorit des oprateurs
1
2
3
4

Exemple 1:
SQL :

arithmtiques
()
Exposant
* /
+ -

logiques
()
NOT
AND
OR

Montrer le nom et la localit des clients habitant ni Mersch ni Hautcharage (4 possibilits).

.
.
.

ou

.
ou

.
ou

.
Rsultat de la requte :

Exemple 2:
SQL :

Montrer le numro, le nom et la localit des clients habitant soit Mersch, soit Hautcharage, mais
qui sont tous clibataires.

.
.
.

ou

SQL :

.
.
.

Rsultat de la requte :

- page 16 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exemple 3:
SQL :

Montrer le nom et le nombre denfants des clients nayant pas 1 3 enfants.

.
.
.

ou

SQL :

.
.
.
.

Rsultat de la requte :

Exemple 4:
SQL :

Montrer le nom, la localit, le nombre denfants et ltat civil des clients habitant Mersch ou ayant
2 enfants, et qui sont tous clibataires.

.
.
.
.

Rsultat de la requte :

- page 17 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

6. Empcher les rptitions de lignes


Les langages dinterrogation affichent par dfaut le rsultat dune requte sans liminer les rptitions de lignes. Si
on veut liminer ces rptitions (doublons) il faudra le spcifier.

SQL

Exemple 1: Afficher la liste de toutes les localits, en numrant chaque localit quune seule fois.

SQL
..
..
Rsultat de la requte :

Exemple 2: Afficher le nom et la localit des clients en numrant chaque nom et localit quune seule fois

SQL
..
..
Rsultat de la requte :

Exemple 3: Afficher le nom des clients en numrant chaque nom quune seule fois

SQL
..
..
Rsultat de la requte :

Exemple 4: Combien de lignes produisent les commandes ci-dessous :


a)
b)
c)
d)
e)
f)

SELECT nom
SELECT DISTINCT nom
SELECT nom, localit
SELECT DISTINCT nom, localit
SELECT DISTINCT nom, localit, datenaiss
SELECT DISTINCT numcli, nom

- page 18 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

7. Le tri / le classement
Le tri permet de classer les enregistrements du rsultat dune requte dans un ordre alphabtique, numrique ou
chronologique.

Lordre de tri
Lordre de tri correspond la manire dont on souhaite organiser les donnes. On peut trier une table en ordre
croissant (e: ascending) ou dcroissant (e: descending). Le tri se fait par dfaut par ordre croissant.
Si on utilise un ordre croissant, le texte est class de A Z, les nombres sont classs de 0 9 et les
dates de la plus ancienne la plus rcente.

SQL
.........................................................................................
.........................................................................................

Si on utilise par contre un ordre dcroissant, le texte est class de Z A, les nombres sont classs
de 9 0 et les dates de la plus rcente la plus ancienne.

SQL
.........................................................................................
.........................................................................................

Remarques :
Dans un systme de gestion de base de donnes relationnel, les enregistrements nont pas dordre particulier dans
une table !

Ce nest que par des commandes de tri que les enregistrements sont visualiss selon un critre de tri spcifi. On
peut utiliser plusieurs critres de tri pour sortir les enregistrements dans un ordre bien prcis.

Le rsultat du tri peut varier selon le type (texte, numrique, date) du champ tri.
Un annuaire tlphonique est tri sur quels critres ?

- page 19 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exemple 1: Afficher le nom et la localit de tous les clients, ayant au moins un enfant, tris selon lordre croissant
des localits.
SQL :

.
.
.
.

Rsultat de la requte :

Exemple 2: Afficher les adresses tries de manire croissante de tous les clients.
SQL :

.
.
.
.

Rsultat de la requte :
Remarque

Exemple 3: Afficher la localit, le nom et le nombre denfants de tous les clients tris selon lordre dcroissant des
localits, croissant des noms et dcroissant des adresses.
SQL :

.
.
.
.

Rsultat de la requte :

- page 20 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

8. L'qui-jointure
L'qui-jointure permet de fusionner les enregistrements de 2 tables possdant un domaine commun.

SQL
Table : client
numcli nom

adresse

localit

Table : commande
numcom date

numcli

Schmit

9 Rue G-D Charlotte

Mersch

2.1.2010

Duront

101 Boulevard Royal

Luxembourg

2.1.2010

Dupont

33 Rue de lAlzette

Mersch

5.1.2010

Muller

6 Rue de Schouweiler

Hautcharage

3.1.2010

Zorro

32 Rue Adolphe

Ptange

Adam

1 Rue du 9 mai 1944

Howald

Dessinez le MLD.

Exemple dune qui-jointure


Table : client
numcli nom

adresse

localit

Table : commande
numcom date

Schmit

9 Rue G-D Charlotte

Mersch

2.1.1998 2

Duront

101 Boulevard Royal

Luxembourg

2.1.1998 3

Dupont

33 Rue de lAlzette

Mersch

5.1.1998 2

Muller

6 Rue de Schouweiler

Hautcharage

3.1.1998 4

Zorro

32 Rue Adolphe

Ptange

Adam

1 Rue du 9 mai 1944

Howald

numcli

Exemple 1 : Crez une qui-jointure entre les tables Client et Commande :


SQL :

.
.
.

Rsultat de la requte :
numcom

date

Commande.
numcli

Client.
numcli

nom

adresse

localit

1
2
3
4

2.1.1998
2.1.1998
5.1.1998
3.1.1998

2
3
2
4

2
3
2
4

Duront
Dupont
Duront
Muller

101 Boulevard Royal


33 Rue de lAlzette
101 Boulevard Royal
6 Rue de Schouweiler

Luxembourg
Mersch
Luxembourg
Hautcharage

- page 21 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exemple 2: Afficher derrire chaque numro de commande le nom et le numro du client correspondant.

SQL
..
..
..
..

Rsultat de la requte :

Exercice :
table: commande
numcom
date

table: comprendre
numcom
numpro

quantit

1
2
3
4

1
1
2
2
2
2

2
1
4
3
1
3

15.2.2007
16.2.2007
17.2.2007
18.2.2007

1.
2.
3.

1
3
2
1
6
5

table produit
numpro nom

prix

1
2
3
4
5
6
7

3
4
1
5
6
7
2

Ajax
Bjax
Cjax
Djax
Ejax
Fjax
Gjax

Combien de lignes est-ce quon obtient aprs lqui-jointure entre les tables commande et comprendre ?
Combien de lignes est-ce quon obtient aprs lqui-jointure entre les tables comprendre et produits ?
Combien de lignes est-ce quon obtient aprs lqui-jointure entre les tables commande, comprendre et
produits ?

9. LALIAS
Un ALIAS est un nom synonyme ou un nom de remplacement dune expression, dun champ ou dune table.
Lutilisation dun ALIAS peut avoir plusieurs intrts:
employer une abrviation du nom dune table, dun champ1) ou dune expression1), ce qui simplifie le travail avec
de longs noms
employer un nom pour une expression, ce qui rend le rsultat de la requte plus significatif
une requte comportant un critre portant sur la valeur dun champ par rapport la valeur de ce mme champ
dans un autre enregistrement de la mme table: lauto-jointure

SQL

1) Pas possible avec les versions actuelles dACCESS.


- page 22 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

10. Lauto-jointure relation double


Lauto-jointure est une requte comportant un critre portant sur la valeur dun champ par rapport la valeur de ce
mme champ dans un autre enregistrement de la mme table. Lauto-jointure est utilise pour toute relation
rflexive.
Exemple 1:
Table: personnel
num_personnel
1
2
3
4
5
6
7
8

nom
Schmit
Muller
Feller
Maurer
Popov
Thill
Schmitz
Meier

prnom
Isabelle
Carine
Pierre
Lea
Alex
Paul
Charlotte
Lynn

num_personnel_chef
7
6
5
3
3
5
6

a) Dessiner le MLD de la table: personnel.


b) Dessiner le MLD des tables "alias": employ et chef.
c) Dessiner l'organigramme de l'entreprise

d) Montrer la liste des noms et prnoms de tout employ ensemble avec le nom et prnom de son chef respectif.
SQL :

.
.
.

Rsultat de la requte :

- page 23 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exemple 2: Afficher pour toutes les routes dune longueur suprieure 20 km : le numro de la route, le nom de la
localit de dpart et le nom de la localit darrive.

Redessiner le MLD avec les tables "alias".

SQL :

.
.
.
.
.

- page 24 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exemple 3: Afficher le nom des lves avec le nom de sa classe actuelle et prcdente.

Elve
No_Eleve
Nom
NoClassePrcdente
NoClasseActuelle

Classe
NoClasse
Nom

a) Dessiner le MLD des tables


b) Redessiner le MLD avec les tables "alias".

SQL :

.
.
.
.
.

- page 25 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

11. Fonctions et expressions


11.1 Fonctions numriques
Chaque SGBD propose des fonctions diverses :

Fonction

Exemple

Rsultat

Extraire le jour dune date


Extraire le mois dune date
Extraire lanne dune date

Exercice 1 : Afficher les annes de naissance des clients.


SQL :

.
.
.

Rsultat de la requte :

- page 26 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exercice 2 : Afficher le nom et la date de naissance des clients ns en 1978.


SQL :

.
.
.

Rsultat de la requte :

Exercice 3 : Afficher le nom et la date de naissance des clients ns en avril.


SQL :

.
.
.

Rsultat de la requte :

Exercice 4 : Afficher les clients ns un 20 avril.


SQL :

.
.
.

Rsultat de la requte :

- page 27 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

11.2 Expressions numriques


Il est possible de combiner la valeur de diffrentes valeurs numriques par les oprateurs arithmtiques (* / + -). Les
oprateurs * et / ont le plus haut niveau de priorit. Il faut utiliser des parenthses pour changer cet ordre de calcul.

Exercice 1 : Pour la fte de Saint Nicolas, tout client reoit un bon de 80,50 par enfant. Afficher le nom des clients
ainsi que le montant de chaque bon.
SQL :

.
.
.

Rsultat de la requte :

11.3 Expressions avec dates et des intervalles


Il est possible dajouter un intervalle une date pour obtenir une autre date ou de calculer un intervalle par la
diffrence entre deux dates.
p.ex. #1/28/2008# - #1/26/2008# = .. jours

Exercice 2 : Afficher le nom et lge des clients en jours en utilisant la fonction ...................... pour connatre la date
courante.
SQL :

.
.
.

Rsultat de la requte :
Exercice 3 : Afficher le nom et lge des clients en annes.
SQL :

.
.
.

Rsultat de la requte :
Exercice 4 : Afficher les numros des commandes passes il y a deux semaines et plus.
SQL :

.
.
.

Rsultat de la requte :

- page 28 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

11.4 Fonctions de groupe


Les fonctions de groupe (e : aggregate function) effectuent un calcul sur lensemble des valeurs dun champ pour un
groupe denregistrements. Un groupe est un sous-ensemble denregistrements dune table, pour lesquels la valeur
dun champ reste constante. Le groupe est constitu de lensemble des enregistrements slectionns.

Les fonctions de groupe les plus courantes sont :

COUNT() compte le nombre doccurrences du champ


SUM() calcule la somme des valeurs du champ (de type numrique)
AVG() calcule la moyenne des valeurs du champ (de type numrique)
MAX() recherche la plus grande valeur du champ
MIN() recherche la plus petite valeur du champ

Exercice 1 : Afficher le nombre moyen denfants des clients.


SQL :

.
.
.

Rsultat de la requte :
Exercice 2 : Afficher le nombre total denfants des clients.
SQL :

.
.
.

Rsultat de la requte :
Exercice 3 : Afficher le nombre denfants le plus lev des clients.
SQL :

.
.
.

Rsultat de la requte :
Exercice 4 : Afficher le nombre de clients.
SQL :

.
.
.

Rsultat de la requte :

- page 29 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

12. Requtes sur les groupes


Un groupe est un sous-ensemble denregistrements dune table, pour lesquels la valeur dun champ reste constante.

12.1 La clause GROUP BY


La clause GROUP BY regroupe en une seule ligne des enregistrements qui possdent des valeurs identiques
lintrieur de chaque groupe pour les champs spcifies.
Tous les champs dans la liste de champs du SELECT doivent tre inclus dans la clause GROUP BY ou tre inclus
dans une fonction de regroupement.
Exercice 1 : Compter le nombre de clients par localit. Afficher les localits et les nombres.
SQL :

.
.
.
.

Rsultat de la requte :
Exercice 2 : Calculer la moyenne de nombre denfants par anne de naissance des clients. Afficher les annes de
naissance, ainsi que les moyennes. Trier les annes de manire dcroissante.
SQL :

.
.
.
.

Rsultat de la requte :
Exercice 3 : Calculer lge moyen (en annes) des clients en fonction du nombre denfants. Afficher le nombre
denfants, ainsi que lge.
SQL :

.
.
.

Rsultat de la requte :
Exercice 4 : Calculer le nombre total denfants par anne de naissance des clients.
SQL :

.
.
.

- page 30 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Rsultat de la requte :
Exercice 5 : Compter le nombre de commandes par clients. Afficher le numro des clients, ainsi que le nombre de
commandes.
SQL :

.
.
.

Exercice 6 : Compter le nombre de commandes par clients. Afficher le numro et le nom des clients, ainsi que le
nombre de commandes.
SQL :

.
.
.

12.2 La clause HAVING


Le critre de la clause HAVING sapplique aux fonctions de groupe, celui du WHERE sapplique aux champs.
En pratique, le critre spcifi dans la clause HAVING porte toujours sur la valeur dune fonction calcule sur un
groupe.
Il ny a jamais un HAVING sans GROUP BY.

Exercice 1 : Afficher les localits dans lesquelles habitent au moins 2 clients.


SQL :

.
.
.
.

Rsultat de la requte :

Exercice 2 : Afficher les localits dans lesquelles la moyenne de nombre denfants par client est infrieure ou gale
2.
SQL :

.
.
.
.

Rsultat de la requte :

- page 31 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

13. La requte imbrique


Dans des requtes imbriques le rsultat de la requte la plus imbrique sert de dpart la requte de niveau
immdiatement suprieur. Les requtes de niveau infrieur sont comprises entre parenthses. Le SELECT de la
requte imbrique comporte une seule colonne (un champ ou une expression) comportant une ou plusieurs valeurs.

13.1 La requte interne renvoyant une seule valeur


La valeur retourne par la requte interne sert de valeur de comparaison dans la clause WHERE ou HAVING. Une
telle requte ne fonctionne que si la requte interne retourne une valeur et une seule. Il faut aussi que cette valeur
retourne soit du mme type que le champ auquel elle est compare!

Exercice 1 Afficher le nom et la date de naissance de tous les clients tant plus gs que le client N4.
SQL :

.
.
.
.
.
.

Rsultat de la requte :

Exercice 2 : Refaire exercice 1 en affichant aprs les donnes de chaque client en plus le nom et la date de naissance
du client N4.
SQL :

.
.
.
.
.
.

Rsultat de la requte :

- page 32 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exercice 3 : Afficher les noms des clients qui ont plus denfants que la moyenne.
SQL :

.
.
.
.
.
.

Rsultat de la requte :

Exercice 4 : Afficher les noms des clients qui ont plus denfants que Zorro.
SQL :

.
.
.
.
.
.

Rsultat de la requte :

Exercice 5 : Afficher les noms des clients qui ont plus denfants que Schmit.

SQL :

.
.
.
.
.
.

Rsultat de la requte :

Remarque :

- page 33 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

13.2 La requte interne renvoyant un ensemble de valeurs


Les valeurs retournes par la requte interne servent de valeurs dans une clause WHERE comportant un oprateur
IN.
Table : client

Table : commande
numcom date

numcli nom
1
Schmit

adresse
9 Rue G-D Charlotte

localit
Mersch

2.1.2010 2

Duront

101 Boulevard Royal

Luxembourg

2.1.2010 3

Dupont

33 Rue de lAlzette

Mersch

5.1.2010 2

Muller

6 Rue de Schouweiler

Hautcharage

3.1.2010 4

Zorro

32 Rue Adolphe

Ptange

Adam

1 Rue du 9 Mai 1944

Howald

Maier

10 Avenue de la Gare

Mersch

Schmit

234 Rue de Luxembourg

Hautcharage

Schmit

7 Rue de la Gare

Mersch

numcli

Exercice 1 : Afficher le nom et la localit des clients habitant dans une localit o habite au moins un client dont le
nom commence par S
SQL :

.
.
.
.
.
.

Rsultat de la requte :

Exercice 2 : Donner le nom des clients qui n'ont pas encore pass de commande.
SQL :

.
.
.
.
.
.

Rsultat de la requte :

- page 34 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

14. Empcher les rptitions dans des fonctions de


groupe
On peut empcher les rptitions de valeurs dans des fonctions de groupe laide de:

SQL
Remarque : Ceci nest pas implment dans les versions actuelles dACCESS, mais dans BASE.

Exercice 1: Compter le nombre de localits diffrentes dans la table client


SQL :

.
.
.

Rsultat de la requte :

15. Requtes paramtres


On peut automatiser le processus de modification des critres quon excute rgulirement en crant une requte
paramtre. Le SGBD invite lutilisateur alors entrer les critres au moment de lexcution de la requte.
Lutilisateur n'a donc plus besoin de modifier la requte pour changer les critres.
Exercice 1:

SQL :

Afficher le nom et ladresse des clients dune localit dont la localit reste spcifier lors de
lexcution de la requte.

.
.
.

Exercice 2:

SQL :

Afficher le nom et le nombre denfants des clients dont le nombre denfants se situe entre 2 valeurs
entres par clavier.

.
.
.

- page 35 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

16. SQL: Rgles simplifies


SELECT
SELECT <tous les champs et expressions afficher>
Utiliser un alias lorsque le libell un champ ou dune expression doit tre chang.
p.ex.
SQL standard
SQL ACCESS

pr_cli

prnom

pr_cli AS prnom

Ajouter le nom de la table devant le nom du champ lorsque le nom dun champ intervient dans 2 tables utilises.
p. ex. client.nom, fournisseur.nom

FROM
FROM < toutes les tables utilises>
Utiliser un alias lors de lutilisation dune auto-jointure ou dune relation double.

WHERE
WHERE <quijointure(s)> et <condition(s) sur champs>

Les champs / expressions des 2 cts des oprateurs de comparaisons (=, <>, <, <=, >, >=) doivent tre du
mme type (numrique, texte, date, logique, etc.).

GROUP BY
SELECT <champ(s)> + <fonction(s) de groupe>

GROUP BY <champ(s)>

HAVING
SELECT <champs> + <fonction(s) de groupe>

GROUP BY <champs>
HAVING <condition(s) sur fonction(s) de groupe>

Les champs / expressions des 2 cts des oprateurs de comparaisons (=, <>, <, <=, >, >=) sont de type
numrique.

p.ex.

SELECT

nom, COUNT(*) AS nombre


FROM client
GROUP BY nom

HAVING

COUNT(*)>10;

ou

HAVING nombre>10;

ORDER BY

- page 36 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Diffrence entre ORDER


num_fact
1
2
3
4

date_fact
1.4.98
3.4.98
2.4.98
2.4.98

et GROUP

date_fact
1.4.98
2.4.98
2.4.98
3.4.98

SELECT *
FROM facture
ORDER BY num_cli;
num_fact
1
4
2
3

BY

BY

num_cli
1
2
3
1

SELECT num_cli, count(*) AS nombre


FROM facture
GROUP BY num_cli;
num_cli
1
1
2
3

ORDER BY = tri asc / desc

num_cli
1
2
3

nombre
2
1
1

GROUP BY = regroupement

Requte imbrique

WHERE <champ> <oprateur de comparaison> (SELECT <1 champ/expression>


)

HAVING <> <oprateur de comparaison> (SELECT <1 champ/expression>


)

Fonctions de groupe

COUNT()
num_fact
1
2
3
4

date
1.4.98
2.4.98
2.4.98

SELECT COUNT(*)
FROM facture;
Rsultat:

num_cli
1
2
3
1

SELECT COUNT(num_fact)
FROM facture;
Rsultat:

SELECT COUNT(date)
FROM facture;
Rsultat:

SELECT COUNT(*) AS nbre_fact, COUNT(DISTINCT num_cli)AS nbre_cli


FROM facture;
Rsultat:

- page 37 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

17. Exercices supplmentaires - Exercice A


table: commande
numcom
date

table: comprendre
numcom
numpro

quantit

table : produit
numpro nom

prix unitaire

1
2
3
4

1
1
2
2
2
3

2
1
4
3
1
3

1
2
3
4
5
6

3
4
1
5
6
7

15.2.2004
16.2.2004
17.2.2004
18.2.2004

1
3
2
1
6
5

Ajax
Bjax
Cjax
Djax
Ejax
Fjax

1) Soulignez les cls des tables ci-dessus. Remplissez les tableaux et formulez les requtes en SQL suivantes:

2) Afficher toutes les lignes de commande:


numcom date
numpro

quantit

prix unitaire

3) Afficher toutes les lignes de commande avec le total payer:


numcom
numpro total

- page 38 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

4) Afficher le nombre de produits diffrents commands par commande:


numcom nombre de produits

5) Afficher la quantit totale commande par produit:


numpro
nom
quantit totale

6) Afficher le total payer par commande:


numcom
date
total

- page 39 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

7) Afficher le nom des produits qui n'ont pas encore t commands


nom

8) Afficher le numro et la date des commandes pour lesquelles on na pas encore commandes des produits.
numro commande
date

- page 40 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exercice B

Description des champs:


type
situation:
datedbut
datefin
clibataire

dfini: studio; appartement; duplex; etc.


rdc, 1er tage, 2e tage, etc.
est la date laquelle le travail commence rellement.
est la date laquelle le travail sest termin. Pour les travaux en cours ce champ est laiss vide.
est un champ logique dcrivant si on est clibataire ou pas

Ralisez les requtes SQL suivantes:


a)

Afficher pour tout travail qui est actuellement encore en cours, le libell du travail, la date de dbut du
travail, ainsi que la localit o ce travail est effectu. (5 points)

b)

Afficher le libell de tous les travaux termins depuis au moins un an (2 points)

c)

Calculer les dpenses totales par immeuble pour les travaux termins en 1997. (4 points)

d)

Afficher le libell des types de travaux ayant cot en total plus de 100.000 (5 points)

e)

Afficher le nombre dhabitations par propritaire. Trier de manire dcroissante sur le nombre dhabitations
et en suite de manire croissante sur le nom. (5 points)
codeprop
nom
nombre
11
Dos Santos
10
7
Miller
4
5
Schmitz
2

f)

Afficher le type dhabitation de tous les clibataires dont le nom commence par C ou D (4 points)

- page 41 -

jmo 9.2011

Informatique 13eCG : SGBD Les langages dinterrogation

Exercice C

PAYEE = champ logique


REMISE en %

Ralisez les requtes SQL suivantes:


1.

Compter le nombre de commandes.

2.

Compter le nombre de produits.

3.

Compter le nombre de produits diffrents commands.

4.

Calculer pour chaque produit la quantit totale commande. Afficher le code et le nom du produit, ainsi que le
total.

5.

Afficher le montant de chaque ligne de commande.

6.

Calculer le chiffre daffaires total de lentreprise.

7.

Afficher le numro de commande, la date de la commande et le montant total pour chaque commande.

8.

Afficher le nom des clients (soc_cli) avec leur montant total respectif.

9.

Afficher le nom des clients (soc_cli) avec un montant total suprieur 100.000

10. Compter le nombre de clients, ainsi que le nombre de localits diffrentes.


11. Afficher le nom des clients (soc_cli), la ville et le numro de facture de toutes les factures non-payes depuis 60
jours.
12. Afficher le nom des clients qui nont pas encore pass de commande.

- page 42 -

jmo 9.2011

S-ar putea să vă placă și