Vous êtes sur la page 1sur 2

Universit Lumire Lyon 2, Facult de Sciences conomiques et de Gestion

Licence IUP ISEA Anne 1999-2000


Examen Oracle
J. Darmont (jerome.darmont@univ-lyon2.fr), 10/05/00

commande pour cette pice.


8. Numro des services ayant command au moins une pice en quantit strictement suprieure chacune
des quantits de pices commandes par le service S1.
9. Intitul des services qui n'ont pas command de pice.

Documents autoriss Dure : 2h Barme fourni titre indicatif Questions indpendantes

10. Quantit totale commande pour les pices P1, P2, et P3.

Question 1 (2 points)

Question 3 (4 points)

Soit la table de schma ETIQUETTES (Et1, Et2), ne contenant aucun tuple. Donner le contenu de cette table
lissue de la squence de commandes SQL*Plus suivante.

On souhaite disposer de statistiques concernant les mises jour (UPDATE) des tables dune base de donnes. Ces statistiques sont stockes dans une table de schma STATS (NomTable, NbMJ). Cette table est
initialise avec le nom de toutes les tables de la base de donnes et le nombre de mises jour NbMJ correspondant initialis 0.

INSERT INTO ETIQUETTES VALUES (A,


INSERT INTO ETIQUETTES VALUES (A,
INSERT INTO ETIQUETTES VALUES (A,
INSERT INTO ETIQUETTES VALUES (B,
INSERT INTO ETIQUETTES VALUES (B,
ROLLBACK;
INSERT INTO ETIQUETTES VALUES (B,
COMMIT;
UPDATE ETIQUETTES SET Et2=Z WHERE
INSERT INTO ETIQUETTES VALUES (B,
COMMIT;
INSERT INTO ETIQUETTES VALUES (C,
INSERT INTO ETIQUETTES VALUES (C,
INSERT INTO ETIQUETTES VALUES (C,
DELETE FROM ETIQUETTES;
ROLLBACK;
UPDATE ETIQUETTES SET Et1=Z;
COMMIT;

A);
B);
C);
A);
B);

Ex.
NomTable
EMP
DEPT
EMP_FR

C);
Et1=B;
B);
A);
B);
C);

Question 2 (10 points)


Soit la base de donnes FABRICATION dont le schma est donn ci-dessous.
PIECE (NOP, DESIGNATION, COULEUR, POIDS)
SERVICE (NOS, INTITULE, LOCALISATION)
COMMANDE (NOP, NOS, QUANTITE)

Formuler en SQL*Plus les requtes suivantes.


1. Numro des services ayant en commande la pice P1 avec une quantit suprieure 10, dans l'ordre
croissant
2. L'emballage d'une pice a un poids gal environ 20 % du poids de la pice. Poids total emball pour les
diffrentes pices, dans l'ordre dcroissant.
3. Nombre de services ayant des commandes.
4. Quantit moyenne commande pour la pice P3.
5. Liste des pices commandes par le service S1 avec leur libell et leurs poids.
6. Numro des services qui ont command la pice P1 et la pice P3 en mme quantit.
7. Numro des services qui ont command la pice P3 avec une quantit infrieure la quantit moyenne

NbMJ
0
0
0

crire un dclencheur (trigger) aprs mise jour de la table EMP et permettant dincrmenter le compteur
statistique NbMJ pour la table EMP dans la table STATS.

Question 4 (4 points)
On suppose que des triggers tels que celui de la question 3 sont dfinis sur toutes les tables de la base de
donnes. En utilisant la table STATS et le catalogue du systme, dfinir une vue nomme STATOWN permettant, pour chaque propritaire (OWNER) de table, de connatre le nombre total de mises jour effectues
sur ses tables.
Ex. Si EMP et EMP_FR appartiennent lutilisateur A, DEPT lutilisateur B et que la table STATS
contient les donnes suivantes :
NomTable
EMP
DEPT
EMP_FR

NbMJ
3
5
7

alors le rsultat de la requte SELECT * FROM STATOWN; sera le suivant.


OWNER
A
B
Donner accs la vue STATOWN tous les utilisateurs.

NbMJ
10
5

Correction Question 1
Et1
Z

Et2
Z

NB : Il fallait prendre en compte les violations de cl primaire.

Correction Question 2
1.

select nos from commande where nop='P1' and qte>10 order by qte;

2.

select nop, poids*1.2 emballe from piece order by emballe desc;

3.

select count(distinct nos) from commande;

4.

select avg(qte) from commande where nop='P3';

5.

select desi, poids from piece p, commande c where p.nop=c.nop and nos='S1';

6.

select distinct c1.nos from commande c1, commande c2


where c1.nos=c2.no and c1.nop='P1' and c2.nop='P3' and c1.qte=c2.qte;

7.

select nos from commande where nop='P3' and qte<


(select avg(qte) from commande where nop='P3');

8.

select distinct nos from commande where qte > all


(select qte from commande where nos='S1');

9.

select inti from service s where not exists


(select * from commande c where c.nos=s.nos);

10.

select nop, sum(qte) from commande where nop in ('P1','P2','P3') group by nop;

Correction Question 3
create or replace trigger emp_update
after update on emp
for each row
begin
update stats set nbmaj=nbmaj+1 where nomtable='EMP';
end;

Correction Question 4
create view statown as
select owner, sum(nbmaj) totmaj
from stats, all_tables
where nomtable=table_name
group by owner;
grant select on statown to public;

Vous aimerez peut-être aussi