Beruflich Dokumente
Kultur Dokumente
5-1
vari.Aik,
Ri1 var1, Ri2 var2
attributs
variables n-uplet
prdicat/condition
o:
Simplifications :
Si varj nest pas spcifie, alors la variable sappelle par dfaut Rij.
Si une seule variable n-uplet possde lattribut A, on peut crire plus
simplement A (non-ambigut).
Cours Bases de donnes (Licence)
5-2
Prdicats
Prdicats simples :
Expression1 Expression2
Exemples :
R.Name = J. Doe
(S.Age + 30) >= 65
R.A = S.B
Prdicats composs :
5-3
5-4
5-5
Ename, Title
Emp, Works
Dur > 17
Emp.Eno = Works.Eno
Ename, Title
Emp E,Works W,Project P
P.City = Paris
E.Eno = W.Eno
W.Pno = P.Pno
5-6
Par dfaut, l'ordre est ascendant (ASC). L'ordre descendant peut tre spcifi
par le mot-cl DESC
Cours Bases de donnes (Licence)
5-7
Oprateurs ensemblistes
UNION, EXCEPT (MINUS), INTERSECT
Les oprandes peuvent tre spcifis par
ASSIGN
SELECT
FROM
WHERE
TO temp-2
B1, ..., Bn
S1, ..., Sr
Q;
utilisation de parenthses
(SELECT A1, ..., An FROM R1, ..., Rm
WHERE P)
UNION
(SELECTB1, ..., Bn FROM S1, ..., Sr
WHERE Q);
5-8
5-9
Ename
Emp
City = Paris)
UNION
Pname
Project
City = Paris)
5-10
Oprateurs ensemblistes :
(A1,An) IN <sous-req> : appartenance ensembliste
EXISTS <sous-req> : test dexistence
(A1,An)<comp> [ALL|ANY] <sous-req> :
comparaison avec quantificateur (ANY par dfaut)
5-11
Expression IN
SELECT
FROM
WHERE (A1,,An)[NOT] IN (SELECT B1,,Bn
FROM
WHERE )
5-12
ALL/ANY
SELECT
FROM
WHERE (A1,,An) ALL/ANY (SELECT B1,,Bn
FROM
WHERE )
5-13
Exemple avec IN
Emp (Eno, Ename, Title, City)
Pay(Title, Salary)
5-14
Expression EXISTS
SELECT
Q
FROM
WHERE
(NOT) EXISTS (SELECT *
FROM
WHERE P)
5-15
Emp
*
Project
Emp.City=Project.City)
Noms des employs qui travaillent dans une ville sans projet?
SELECT Ename FROM Emp
WHERE NOT EXISTS (SELECT *
FROM
Project
WHERE Emp.City=Project.City)
Cours Bases de donnes (Licence)
5-16
Calcul relationnel :
5-17
5-18
5-19
Fonctions d'agrgation
Pour calculer une valeur numrique partir d'une
relation
5-20
Exemples d'agrgation
Emp (Eno, Ename, Title, City)
Pay(Title, Salary)
5-21
Fonctions d'agrgation
Emp (Eno, Ename, Title, City)
Pay(Title, Salary)
Pname
Project
Budget > [ANY]
(SELECT AVG(Budget)
FROM
Project)
5-22
Requtes de groupement :
GROUP BY
Pour partitionner les n-uplets rsultats en fonction des valeurs
de certains attributs :
SELECT
FROM
WHERE
GROUP BY
Rgles:
5-23
GROUP BY
SELECT A1, B1, sum(A2)
FROM
R1, R2
WHERE
A1 < 3
GROUP BY A1, B1
R1
A1 A2
2
1
2
3
1
3
6
1
8
3
2
3
R2
B1
a
from
A1 A2 B1
2 6 a
1 1 a
2 8 a
3 3 a
1 2 a
3 3 a
A1 A2
2 6
where 1 1
2 8
1 2
B1
a
a
a
a
A1 B1
group by
1
2
A2*
a 1
2
6
a 8
select
A1 B1 sum(A2)
3
1
a
14
2 a
5-24
Exemples de groupement
Emp (Eno, Ename, Title, City)
Pay(Title, Salary)
Pno, Count(Eno)
Works
Pno
5-25
Ai, , An
R1, , Rm
P
Aj , Ak
Q
5-26
Exemples de groupement
Emp (Eno, Ename, Title, City)
Pay(Title, Salary)
City
Emp
City
COUNT(ENO) > 2
5-27
Couplage SQLlangage de
programmation (Embedded SQL)
Permet d'accder une BD depuis un programme
d'application
5-28
Dveloppement d'application
Source Files with
Embedded SQL
Preprocessor
Modified Source
Files
Libraries
Host Language
Compiler
Object Code Files
Host Language
Linker
Executable
Cours Bases de donnes (Licence)
5-29
5-30
5-31
5-32
Exemple de curseur
Pour chaque projet employant plus de 2 programmeurs, donner le numro de
projet et la dure moyenne d'affectation des programmeurs
while(1) {
EXEC SQL FETCH FROM duration INTO :pno, :avg-dur
if(strcmp(SQLSTATE, 02000) then break
else < print the info >
}
EXEC SQL CLOSE duration
Cours Bases
de donnes (Licence)
5-33
PL/SQL dOracle
PL/SQL : langage de programmation procdural intgrant SQL.
Bloc PL/SQL : regroupement logique de dclarations et dordres.
declare
sal number;
begin
SELECT SALARY INTO sal
FROM
PAY
WHERE TITLE = Programmer;
if sal>10 then
UPDATE PAY
SET SALARY = SALARY * 1.1
WHERE TITLE = Programmer;
end if;
COMMIT;
exception
when no_data_found then
INSERT INTO ERROR values (TITLE inexistant);
Cours Bases de donnes (Licence)
5-34
Traitement de PL/SQL
Moteur PL/SQL
Bloc
PL/SQL
Analyse
Procdural
Excution
procdurale
SQL
Serveur Oracle
5-35