Vous êtes sur la page 1sur 2

1.

a.
create table spectacles(
id_lieu number constraint fk_spectacles_lieux references lieux(id_lieu),
id_piece number constraint fk_spectacles_pieces references pieces(id_piece),
date_piece date default sysdate,
constraint pk_spectacles primary key(id_lieu,id_piece,date_piece)
);

b.
Alter table acteurs add constraint ck_acteur CHECK (lower(genre) in ('com�dien',
'romantique', 'dramatique'));
c.
Alter table spectateurs add constraint uq_email Unique(email);

2.
a/create sequence seq_acteur start with 2 minvalue 1 maxvalue 100 increment by 2
cycle;
b/ la s�quence retourne � la valeur minimale soit � 1

3.
create or replace view acteurs_comediens as select * from acteurs
where genre like 'com�dien';
--> l'ajout est effectu� pour l'empecher il faut ajouter l'option with check option
ou with read only � la fin de la d�finition de la vue soit :

create or replace view acteurs_comediens as select * from acteurs


where genre like 'com�dien'
With read only | with check option

4.
a
begin
insert into acteurs values ( seq_acteur.nextval,'acteur1','com�dien');

insert into acteurs values ( seq_acteur.nextval,'acteur2','dramatique');


end;

b. create table lieu_copie as select * from lieux where capacite >200

5.
//
alter table acteurs drop constraint ck_acteur;(0.25PT)

update acteurs set genre= (


select
case(genre) when 'com�dien' then 'c'
when 'romantique' then 'r'
when 'dramatique' then 'd'
end
from acteurs); (1.5 PT)

alter table acteurs add constraint ck_acteur CHECK (lower(genre) in ('c', 'r',
'd'));

(0.25PT)
//

6.

delete from acteurs where id_acteur not in(select id_acteur from acteurs_pieces)

ou

delete from acteurs where id_acteur in


(select id_acteur from acteurs
MINUS
select id_acteur from acteurs_pieces)

7.
select row_number() over (Order by id_spec desc), S.* from spectateur S
where email is not null
and
UPPER(substr(nom_spec,1,1)) IN('A','M')

ou
select row_number() over (Order by id_spec desc), S.* from spectateur S
where email is not null
and
(UPPER(nom_spec) like 'A%' OR UPPER(nom_spec) like 'M%')

8.
select a.id_piece,titre
from pieces a inner join SPECTACLES b on
(a.id_piece=b.id_piece)
and lower(to_char(date_piece,'day'))='dimanche'
order by a.id_piece desc;

9.
select titre_piece, nom_lieu,date_piece, SUM(prix) recette
FROM pieces P Inner join reservations R
ON P.id_piece=R.id_piece
Inner join Lieux L
on R.id_lieu=L.id_piece
Group by (titre_piece,nom_lieu,date_piece)
having Sum(prix)>10000;

Vous aimerez peut-être aussi