CHAP
5-1 INTROCUCTION AUX REQUETES
Une requête consiste à interroger une base de données. C’est une question formulée avec un langage adéquat pour laquelle on attend une réponse (résultat de la requête).
Dans un environnement client-serveur, une requête est adressée par une station de travail « client » à un serveur de base de données qui exécute la requête et renvoie au « client » le résultat. Avantage : le client n’a pas à manipuler l’intégralité de la base de données
Les requêtes sont élaborées à partir du modèle relationnel. Pour PREPARER une requête avant de la tester sur machine on peut utiliser soit :
- un langage algébrique
- un tableau
EXEMPLE :
Dans l’entreprise Vidéo+ on vous communique les relations (tables) suivantes :
CLIENTS
CODE CLI |
NOM CLI |
PREN CLI |
RUE CLI |
VILLE CLI |
1 |
DURAND |
Jean-Paul |
Rue des Wets |
DOUAI |
2 |
ALEXIS |
Marc |
Rue d'Anjou |
WAZIERS |
3 |
LEBIENHEUREUX |
Alexandre |
Rue Boda |
FLERS |
CASSETTE
CODE CASS |
NOM CASS |
PRIX LOC |
1 |
L'homme de Rio |
10 |
2 |
Passion sur le Net |
20 |
3 |
Cauchemar informatique |
15 |
4 |
La belle et l'ordinateur |
20 |
LOCATION
CODE CLI |
CODE CASS |
DATE LOC |
DATE RETOUR |
1 |
2 |
12/01/1995 |
13/01/1995 |
2 |
1 |
05/01/1995 |
06/01/1995 |
2 |
2 |
04/01/1995 |
05/01/1995 |
2 |
3 |
02/01/1995 |
05/01/1995 |
2 |
4 |
12/01/1995 |
15/01/1995 |
3 |
4 |
15/01/1995 |
16/01/1995 |
On voudrait connaître le nom des clients ayant loué la cassette « Passion sur le Net »
· Solution en langage algébrique
R1=SELECTION(CASSETTE,Nom cass = « Passion sur le net »)
R2=PROJECTION(R1,Code cass)
R3=JOINTURE(R2,LOCATION, R2.Code cass=LOCATION.Code cass)
R4=PROJECTION(R3, Code cli)
R5=JOINTURE(R4,CLIENT,R4.Code cli = CLIENT.Code cli)
R4=PROJECTION(R3,Nom cli)
Remarque R2 et R4 sont facultatifs
· Solution « par tableau »
RELATION |
OPERATEURS |
CONDITION |
RELATION RESULTAT |
CASSETTE |
Sélection Projection |
Nom cass=« Passion sur le Net » |
R1(Code cass) |
R1, LOCATION |
Jointure Projection |
Code Cass |
R2(Code cli) |
R2, CLIENT |
Jointure Projection |
Code cli |
R3(Nom cli) |
Pour réaliser des requêtes sur ordinateur, on peut :
utiliser un langage Q.B.E. (Query By Example)
ou utiliser un langage universel : le S.Q.L. (Structured Query Language)
en Q.B.E. avec le logiciel ACCESS 2
Le résultat est alors le suivant :
NOM CLI |
DURAND |
ALEXIS |
SELECT DISTINCTROW CLIENTS.[NOM CLI]
FROM CASSETTE INNER JOIN (CLIENTS INNER JOIN LOCATION ON CLIENTS.[CODE CLI] = LOCATION.[CODE CLI]) ON CASSETTE.[CODE CASS] = LOCATION.[CODE CASS]
WHERE ((CASSETTE.[NOM CASS]="Passion sur le Net"));
NB : Access peut traduire une requête QBE en langage SQL mais le code est lourd. Une autre version SQL pourrait être :
SELECT [NOM CLI]
FROM CLIENT, CASSETTE, LOCATION
WHERE CLIENTS.[CODE CLI] = LOCATION.[CODE CLI])
AND CASSETTE.[CODE CASS] = LOCATION.[CODE CASS]
AND CASSETTE.[NOM CASS]="Passion sur le Net" ;
Conclusion : le langage SQL est indispensable pour réaliser des requêtes exécutées par un serveur de bases de données SQL (MS SQL Server 2000, Oracle, Interbase, MySql,…)