Vous êtes sur la page 1sur 11

BTS IG ALSI Le langage de requtes

Le langage de requtes

1. La base de donnes ....................................................2


2. Lalgbre relationnelle .................................................3
2.1. La projection .............................................................................................................. 3
2.2. La slection (ou restriction)........................................................................................ 3
2.3. La jointure .................................................................................................................. 4
2.4. Lunion ....................................................................................................................... 4
2.5. Lintersection ............................................................................................................. 5
2.6. La diffrence .............................................................................................................. 6
2.7. La division.................................................................................................................. 6
Le langage SQL .............................................................7
2.8. La projection .............................................................................................................. 7
2.9. La slection (ou restriction)........................................................................................ 7
2.10. La jointure .............................................................................................................. 8
2.11. Les expressions et fonctions................................................................................... 9
2.11.1. les oprateurs arithmtiques : +, -, *, / ............................................................... 9
2.11.2. les fonctions arithmtiques................................................................................. 9
2.11.3. Les fonctions sur les chanes de caractres ........................................................ 9
2.11.4. Les fonctions sur les dates.................................................................................. 9
2.11.5. Les fonctions de conversion ............................................................................. 10
2.12. Les fonctions dagrgat : ...................................................................................... 10
2.13. Les requtes imbriques ....................................................................................... 11
2.14. La clause GROUP BY................................................. Erreur ! Signet non dfini.
2.15. La clause HAVING ..................................................... Erreur ! Signet non dfini.

Rappels : Un systme de gestion de bases de donnes relationnel (SGBDR) rassemble


une ou plusieurs bases de donnes ainsi que lensemble des outils ncessaires la
manipulation des donnes.
Il permet de :
- dcrire les donnes et leur structure (type de donnes) grce un langage de
dfinition de donnes (LDD),
- manipuler les donnes par des requtes dinterrogation et des instructions de
mise jour grce au langage de manipulation de donnes (LMD).

Le langage SQL est pratiquement devenu une norme dans le cadre de la gestion des
donnes.

1
BTS IG ALSI Le langage de requtes

1. La base de donnes
La base de donnes EMP-DEPT utilise en exemple dans ce cours dcrit les
caractristiques des employs dune entreprise :

Table EMP : les employs

empno ename job mgr hiredate sal comm deptno


7369 SMITH CLERK 7902 17/12/80 800 20
7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30
7521 WARD SALESMAN 7698 22/02/81 1250 500 30
7566 JONES MANAGER 7839 02/04/81 2975 20
7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30
7698 BLAKE MANAGER 7839 01/05/81 2850 30
7782 CLARK MANAGER 7839 09/06/81 2450 10
7788 SCOTT ANALYST 7566 09/11/81 3000 20
7839 KING PRESIDENT 17/11/81 5000 10
7844 TURNER SALESMAN 7698 08/09/81 1500 0 30
7876 ADAMS CLERK 7788 23/09/81 1100 20
7900 JAMES CLERK 7698 03/12/81 950 30
7902 FORD ANALYST 7566 03/12/81 3000 20
7934 MILLER CLERK 7782 23/01/82 1300 10

Signification des colonnes:


- empno : numro identifiant un employ,
- ename : nom demploy,
- job : fonction,
- mgr : numro du responsable (manager) dun employ,
- hiredate : date dembauche,
- sal : salaire,
- comm : commissions perues (uniquement pour les vendeurs, les reprsentants),
- deptno : numro de dpartement.

Table DEPT: les dpartements (au sens service)

deptno dname loc


10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

Signification des colonnes:


- deptno : numro identifiant un dpartement,
- dname : nom du dpartement,
- loc : localisation (la ville).

Contraintes dintgrit rfrentielle :


- deptno de emp rfrence deptno de dept
- mgr de emp rfrence empno de emp

2
BTS IG ALSI Le langage de requtes

2. Lalgbre relationnelle
Lalgbre relationnelle est un outil mathmatique permettant de raliser des calculs
(appels requtes) sur des relations.

2.1. La projection
Lopration de projection permet de retenir uniquement certaines colonnes (champs)
dune relation.

Syntaxe : R = Proj (<nom relation> ; <nom des attributs>)

Exemple : rsultat = proj(emp, {ename, empno})

ename empno
SMITH 7369
ALLEN 7499
WARD 7521
JONES 7566
MARTIN 7654
BLAKE 7698
CLARK 7782
SCOTT 7788
KING 7839
TURNER 7844
ADAMS 7876
JAMES 7900
FORD 7902
MILLER 7934

empno ename job mgr hiredate sal comm deptno


7369 SMITH CLERK 7902 17/12/80 800 20
7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30
7521 WARD SALESMAN 7698 22/02/81 1250 500 30
7566 JONES MANAGER 7839 02/04/81 2975 20
7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30
7698 BLAKE MANAGER 7839 01/05/81 2850 30
7782 CLARK MANAGER 7839 09/06/81 2450 10
7788 SCOTT ANALYST 7566 09/11/81 3000 20
7839 KING PRESIDENT 17/11/81 5000 10
7844 TURNER SALESMAN 7698 08/09/81 1500 0 30
7876 ADAMS CLERK 7788 23/09/81 1100 20
7900 JAMES CLERK 7698 03/12/81 950 30
7902 FORD ANALYST 7566 03/12/81 3000 20
7934 MILLER CLERK 7782 23/01/82 1300 10

2.2. La slection (ou restriction)


La restriction permet d'extraire d'une table les lignes qui satisfont une ou plusieurs
conditions.

Syntaxe : R = Resctrict (<nom relation> ; <condition>)

Exemple : rsultat = restrict(emp, deptno=20)

3
BTS IG ALSI Le langage de requtes

empno ename job mgr hiredate sal comm deptno


7369 SMITH CLERK 7902 17/12/80 800 20
7566 JONES MANAGER 7839 02/04/81 2975 20
7788 SCOTT ANALYST 7566 09/11/81 3000 20
7876 ADAMS CLERK 7788 23/09/81 1100 20
7902 FORD ANALYST 7566 03/12/81 3000 20

empno ename job mgr hiredate sal comm deptno


7369 SMITH CLERK 7902 17/12/80 800 20
7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30
7521 WARD SALESMAN 7698 22/02/81 1250 500 30
7566 JONES MANAGER 7839 02/04/81 2975 20
7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30
7698 BLAKE MANAGER 7839 01/05/81 2850 30
7782 CLARK MANAGER 7839 09/06/81 2450 10
7788 SCOTT ANALYST 7566 09/11/81 3000 20
7839 KING PRESIDENT 17/11/81 5000 10
7844 TURNER SALESMAN 7698 08/09/81 1500 0 30
7876 ADAMS CLERK 7788 23/09/81 1100 20
7900 JAMES CLERK 7698 03/12/81 950 30
7902 FORD ANALYST 7566 03/12/81 3000 20
7934 MILLER CLERK 7782 23/01/82 1300 10

2.3. La jointure
La jointure agit sur deux tables ou plus. Elle permet de rapprocher les informations
issues de 2 tables ayant un attribut commun (qui ne porte pas forcment le mme nom
dans les deux tables).

Syntaxe : R = Join (<relation1>, <relation2>, <condition de jointure>)

Exemple : rsultat = join(emp, dept, emp.deptno = dept.deptno)

empno ename job mgr hiredate sal comm deptno Deptno Dname loc
7369 SMITH CLERK 7902 17/12/80 800 20 20 RESEARCH DALLAS
7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30 30 SALES CHICAGO
7521 WARD SALESMAN 7698 22/02/81 1250 500 30 30 SALES CHICAGO
7566 JONES MANAGER 7839 02/04/81 2975 20 20 RESEARCH DALLAS
7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30 30 SALES CHICAGO
7698 BLAKE MANAGER 7839 01/05/81 2850 30 30 SALES CHICAGO
7782 CLARK MANAGER 7839 09/06/81 2450 10 10 ACCOUNTING NEW YORK
7788 SCOTT ANALYST 7566 09/11/81 3000 20 20 RESEARCH DALLAS
7839 KING PRESIDENT 17/11/81 5000 10 10 ACCOUNTING NEW YORK
7844 TURNER SALESMAN 7698 08/09/81 1500 0 30 30 SALES CHICAGO
7876 ADAMS CLERK 7788 23/09/81 1100 20 20 RESEARCH DALLAS
7900 JAMES CLERK 7698 03/12/81 950 30 30 SALES CHICAGO
7902 FORD ANALYST 7566 03/12/81 3000 20 20 RESEARCH DALLAS
7934 MILLER CLERK 7782 23/01/82 1300 10 10 ACCOUNTING NEW YORK

2.4. Lunion
L'union de deux tables R et S, note R U S ou UNION(R,S), est une table T de mme
schma (les domaines associs aux colonnes de R sont identiques aux domaines associs
aux colonnes de S), contenant les enregistrements appartenant R ou S ou aux deux
tables.

Syntaxe : R = Union (<relation1>, <relation2>)

4
BTS IG ALSI Le langage de requtes

Exemple :
Relation R1 : Relation R2 :

empno ename deptno empno ename deptno


7782 CLARK 10 7782 CLARK 10
7839 KING 10 7788 SCOTT 20
7934 MILLER 10 7876 ADAMS 20
7902 FORD 20

rsultat = union(R1, R2)

empno ename deptno


7782 CLARK 10
7839 KING 10
7934 MILLER 10
7788 SCOTT 20
7876 ADAMS 20
7902 FORD 20

2.5. Lintersection
L'intersection de deux tables R et S, note R S ou INTERSECT(R,S), est une table T de
mme schma, contenant les enregistrements appartenant la fois R et S.

Syntaxe : R = Intersect (<relation1>, <relation2>)

Exemple :
Relation R1 : Relation R2 :

empno ename deptno empno ename deptno


7782 CLARK 10 7782 CLARK 10
7839 KING 10 7788 SCOTT 20
7934 MILLER 10 7876 ADAMS 20
7902 FORD 20

rsultat = intersect(R1,R2)

empno ename deptno


7782 CLARK 10

5
BTS IG ALSI Le langage de requtes

2.6. La diffrence
La diffrence de deux tables R et S, note R - S ou MINUS(R,S), est une table T de
mme schma, contenant les enregistrements appartenant R mais pas S.

Syntaxe : R = Minus (<relation1>, <relation2>)

Exemple :
Relation R1 : Relation R2 :

empno ename deptno empno ename deptno


7782 CLARK 10 7782 CLARK 10
7839 KING 10 7788 SCOTT 20
7934 MILLER 10 7876 ADAMS 20
7902 FORD 20

Rsultat = minus(R1, R2)

empno ename deptno


7839 KING 10
7934 MILLER 10

2.7. La division
La division agit sur deux tables R et S ayant un attribut commun (qui ne porte pas
forcment le mme nom dans les deux tables).
Elle est constitue des enregistrements de R qui sont accoupls chacune des valeurs de
S.

Syntaxe : R = <nom relation> (<attribut 1> / <attribut 2>) <nom relation>

Exemple :
Relation Conduit : Relation Avions :

npilote numavion navion description


1 1 1 Boeing 747
1 2 2 Airbus A320
1 3 3 Tupolev
2 1
2 2
3 1

Rsultat = Conduit(numavion / navion) Avions

Npilote
1

On obtient dans la relation rsultat les numros des pilotes qui conduisent tous les avions
rpertoris dans la relation Avions.

6
BTS IG ALSI Le langage de requtes

Le langage SQL
Le langage SQL est un outil dinterrogation des SGBDR qui sappuie sur lalgbre
relationnelle.
Les mots rservs du langage sont crits en majuscule.

2.8. La projection

SELECT [DISTINCT] (<nomattribut1>, [<nomattribut2,] ) | *


FROM <nom de table> ;

La clause DISTINCT permet dliminer les doublons : si dans le rsultat plusieurs lignes sont
identiques, une seule sera conserve.
Le symbole * permet dobtenir tous les attributs sans avoir tous les citer.

Exemples : Liste des numros et noms demploys


Select ename, empno from emp ;

Liste de tous les employs


Select * from emp ;

Liste des fonctions occupes dans lentreprise


Select job from emp ;
Remarque : la requte renvoie plusieurs lignes identiques.

Liste des fonctions occupes dans lentreprise (avec suppression des


lignes identiques)
Select distinct job from emp ;

La clause ORDER BY : Elle permet de trier les rsultats suivant diffrentes expressions
(souvent des noms de colonnes) par ordre croissant (ASC) ou dcroissant (DESC).
Loption ASC est prise par dfaut pour chacune des expressions cites.

Exemple : Liste des employs par salaires dcroissants


Select ename, sal
from emp
order by sal desc;

2.9. La slection (ou restriction)

SELECT [DISTINCT] (<nomattribut1>, [<nomattribut2,] ) | *


FROM <noms des tables>
WHERE <condition de recherche>
[ AND <condition de recherche> ];

Une condition de recherche est de la forme : argument1 oprateur argument2

7
BTS IG ALSI Le langage de requtes

Les diffrents oprateurs dune condition de recherche :

Oprateur Description
= Egal
!= Diffrent
<> Diffrent
> Suprieur
>= Suprieur ou Egal
< Infrieur
<= Infrieur ou Egal
Between ... AND ... Entre ... et ...
In Dans
Like Comme
Is Null Est indfini
Any Au moins 1
All Tout

Exemples : Liste des employs appartenant au dpartement 20


Select ename, empno from emp where deptno = 20 ;

Liste des employs occupant la fonction de vendeur ou analyste


Select ename, empno from emp
where job in ("SALESMAN", "ANALYST") ;

Liste des employs embauchs au mois de septembre 1981


Select ename, empno, hiredate from emp
where hiredate between "01/09/81 and "30/09/81 ;

Liste des employs dont le salaire est compris entre 2000 et 3000
Select * from emp where sal between 2000 and 3000 ;

Liste des employs dont le nom commence par un J


Select * from emp where ename like "J%";

2.10. La jointure

SELECT [DISTINCT] (<nomattribut1>, [<nomattribut2,] ) | *


FROM <noms des tables>
WHERE <condition de recherche>
[ AND <condition de recherche> ];

Exemple : Liste des employs ainsi que le nom de leur dpartement


Select ename, dname
from emp, dept
where emp.deptno = dept.deptno

Il est possible dutiliser un alias pour renommer les tables.

Exemple : Select ename, dname

8
BTS IG ALSI Le langage de requtes

from emp E, dept D


where E.deptno = D.deptno

2.11. Les expressions et fonctions


Elles sont utilisables aprs les clauses SELECT, WHERE, HAVING et ORDER BY.

2.11.1. les oprateurs arithmtiques : +, -, *, /


Exemple : Select ename, sal + com
from emp
where comm is not null
and comm > 0.25*sal;

2.11.2. les fonctions arithmtiques

ABS(n) valeur absolue


CEIL(n) le plus petit entier infrieur qui dpasse n
FLOOR(n) le plus grand entier infrieur n
MOD(n,m) reste de la division de m par n
POWER(n,m) m est lev la puissance n
ROUND(n, [m]) n est arrondi m dcimales (m=0 si omis)
TRUNC(n, [m]) n est tronqu m dcimales (m=0 si omis)
SQRT(n) racine carre
LEAST(n1,n2) la plus faible valeur parmis n1, n2
GREATEST(n1,n2) la plus forte valeur parmis n1, n2

Exemple : Select ename, greatest(sal, comm) from emp;

Select empno, ename, least(round(sal), round(comm))


From emp
Where round(sal) > 2000;

2.11.3. Les fonctions sur les chanes de caractres


LENGTH(c) longueur de la chane
UPPER(c), LOWER(c) conversion en majuscules, minuscules
SUBSTR(c,p [,l]) extrait la sous-chaine de c partir du p-ime caractre,
ayant pour longueur l
GREATEST(c1,c2)
LEAST(c1,c2)
c1 || c2 concatne les chanes c1 et c2

2.11.4. Les fonctions sur les dates


Deux dates peuvent tre compares entre elles avec les oprateurs de
comparaison (<, >).
Une date peut tre cherche dans un intervalle (d between d1 and d2).
Le nombre de jours entre deux dates peut tre obtenu par : d1-d2.

9
BTS IG ALSI Le langage de requtes

LEAST(d1,d2)
GREATEST(n1,n2)
ADD_MONTHS(d,n) ajoute n mois la date d et renvoie une date
MONTHS_BETWEEN(d1,d2) exprime la diffrence de mois entre d1 et d2
NEXT_DAY(d, jour) donne la premire date qui suit la date d et qui
Correspond au jour de la semaine donn
Ex : next_day(d, Monday)

SYSDATE est une variable donnant la date systme (la date courante).

Exemple : select * from emp


Where sysdate-hiredate < 30;

Elle peut tre affiche par : select sysdate from dual;

2.11.5. Les fonctions de conversion


Le format par dfaut dune date est : DD/MON/YY qui correspond 2 chiffres (jours), 3
lettres (mois), 2 chiffres (anne), les champs tant spars par le symbole /
Par exemple : 20/AUG/93

La fonction TO_CHAR(d, format) convertit une date ou une expression de type date en
une chane dont le format est prcis.
Par exemple : to_char(d, dd/mm/yy) renvoie 20/08/93

Exemple : select ename, to_char(hiredate,DD/MONTH)


from emp
Where to_char(hiredate,yyyy) = 1993;

La fonction TO_DATE(c, format) convertit une chane associe une date dont le format
est prcis en un objet de type date.
Par exemple : to_date(89/16/07, YY/DD/MM) retourne la date du 16 juillet 1989.

La fonction TO_NUMBER(c) convertit une chane de caractres numriques en un objet de


type numrique.

2.12. Les fonctions dagrgat :

Les fonctions dagrgat permettent d'obtenir des informations relatives un ensemble de


donnes. Elles sappliquent un ensemble de lignes et renvoient une valeur.

count dnombre les occurrences d'un attribut


avg calcule la moyenne d'un attribut
sum calcule la somme sur un attribut
min dtermine la plus petite occurrence d'un attribut
max dtermine la plus grande occurrence d'un attribut

Toutes ces fonctions d'agrgats ignorent les valeurs nulles mais peuvent avoir des
valeurs qui se rptent. Pour prciser qu'il faut tenir compte de toutes les valeurs ou

10
BTS IG ALSI Le langage de requtes

seulement de celles qui sont distinctes, il faut prciser ALL ou DISTINCT ( par dfaut,
c'est ALL).

Exemple : Nombre demploys appartenant au dpartement 20


Select count(*) from emp where deptno = 20 ;

Salaire le plus lev


Select max(sal) from emp ;

Nombre de fonctions
Select count(distinct job) from emp;

Select ename, max(sal) Requte mal construite !


From emp;

2.13. Les requtes imbriques

Exemple de requte ;
Liste des employs appartenant au dpartement des Ventes
Select ename
from emp, dept
where emp.deptno = dept.deptno
and dept.dname = "SALES"

Un requte imbrique est compose de deux ou plusieurs select. Le premier est appel
requte principale, le ou les suivants, sous-requtes.

Lexcution se fait en deux temps :


- dabord les sous-requtes qui extraient les valeurs intermdiaires
- puis la requte principale sexcute sur les valeurs intermdiaires

Le lien entre deux Select est ralis par :


- IN si la sous-requte fournit plusieurs valeurs
- = si la sous-requte ne fournit quune seule valeur

Exemples ; Liste des employs appartenant au dpartement des Ventes


Select ename
from emp
where deptno = ( select deptno
from dept where dname = "SALES");

Liste des dpartements comportant au-moins un employ


Select dname
from dept
where deptno in (select deptno from emp);

11