SQL Lid
SQL Lid
SQL Lid
Le langage de requtes
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 :
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.
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
3
BTS IG ALSI Le langage de requtes
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).
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.
4
BTS IG ALSI Le langage de requtes
Exemple :
Relation R1 : Relation R2 :
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.
Exemple :
Relation R1 : Relation R2 :
rsultat = intersect(R1,R2)
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.
Exemple :
Relation R1 : Relation R2 :
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.
Exemple :
Relation Conduit : Relation 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
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.
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.
7
BTS IG ALSI Le langage de requtes
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
Liste des employs dont le salaire est compris entre 2000 et 3000
Select * from emp where sal between 2000 and 3000 ;
2.10. La jointure
8
BTS IG ALSI Le langage de requtes
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).
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
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.
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).
Nombre de fonctions
Select count(distinct job) from emp;
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.
11