Sunteți pe pagina 1din 43

Academia de Studii Economice, Bucureti

Facultatea de Cibernetic, Statistic i Informatic Economic

PROIECT
BAZE de DATE

Bolovan
Agnes
Grupa 1022, seria A, an II

Descriere eveniment
Festivalul National de Teatru Serile Teatrului Studentesc (STS)
este un proiect de anvergura al Sindicatului Studentilor din Facultatea de
Cibernetica, Statistica si Informatica Economica (SiSC) si reuneste in fiecare
an actori talentati, amatori si profesionisti intr-un spectacol incantator.
Va invitam si in acest an la Casa de Cultura a Studentilor, sa va
bucurati timp de o saptamana de un festival de exceptie!

Entitati si atribute
Actor: id(PK), nume, prenume, oras, tara;
Piesa: id(PK), titlu, durata, descriere;
Autor: id(PK), nume, prenume, data_nastere, tara;
Reprezentatie: id_reprezentatie(PK), id_piesa(FK), data, ora;
Evidenta spectacol: id_actor(PK), id_reprezentatie(PK);
Inregistrare: id_inregistrare(PK), id_piesa(FK), id_autor(FK);

Relatii intre entitati


Un actor se regaseste in mai multe evidente ale spectacolelor, insa o
evidenta spectacol contine un singur actor.
O piesa poate avea mai multe reprezentatii, insa o reprezentatie este a
unei singure piese.

O piesa poate avea mai multe inregistrari, dar o inregistrare contine o


singura piesa.
Un autor se poate regasi in mai multe inregistrari, insa o inregistrare
apartine unui singur autor.
O reprezentatie se poate regasi in mai multe evidente ale spectacolelor,
insa o evidenta spectacol contine o singura reprezentatie.

Comenzi de definire a datelor (LDD)


CREATE
Create table Actor(
id number(3) primary key,
nume varchar2(20) not null,
prenume varchar2(20) not null,
oras varchar2(15),
tara varchar2(15)
);

Create table Piesa(


id number(4) primary key,
titlu varchar2(15) not null,
durata number(3),
descriere varchar2(100)
);

Create table Autor(


id number(3) primary key,
nume varchar2(20) not null,
prenume varchar2(20) not null,
data_nastere date,
tara varchar2(15)
);

Create table Reprezentatie(


id number(3) primary key,
id_piesa number(4),
constraint fk_reprez foreign key(id_piesa) references Piesa(id),
data date,
ora varchar2(5)
);

Create table Evidenta_Spectacol(


id_actor number(3),
id_reprezentatie number(3) ,
primary key(id_actor, id_reprezentatie)
);

Create table Inregistrare(


id number(5) primary key,
id_piesa number(4),
constraint fk_piesa foreign key(id_piesa) references Piesa(id),
id_autor number(3),
constraint fk_autor foreign key(id_autor) references Autor(id)
);

ALTER

1. Adaugati coloana adresa_mail in tabela Actor


alter table Actor
add(adresa_mail varchar2(20));

2. Adaugati o restrictie astfel incat campul adresa_mail din


tabela Actor sa nu poata fi nul.
alter table Actor
modify adresa_mail not null;

10

3. Adaugati o restritie astfel incat campul adresa_mail din


tabela Actor sa fie de forma %%%@gmail.com
alter table Actor
add constraint check_mail check(adresa_mail like '%@gmail.com');

5. Dezactivati restrictia de mai sus.


alter table Actor
disable constraint check_mail;

11

6. Redenumiti campul adresa_mail in adresa_email din tabela


Actor
alter table Actor
rename column adresa_mail to adresa_email;

7. Modificati proprietatile campului adresa_email , din tabela


Actor , astfel incat lungimea acestuia sa fie de 30.
12

alter table Actor


modify(adresa_email varchar2(30));

8. Modificati proprietatile campului titlu, din tabela Piesa,


astfel incat acesta sa aiba lungimea de 50.
alter table Piesa
modify titlu varchar2(50);

DROP
1. Eliminati campul varsta din tabela Actor.
alter table Actor drop column varsta;

13

2. Eliminati campul tara din tabela Actor


alter table Actor drop column tara;

3. Eliminati capul descriere din tabela Piesa.


alter table Piesa drop column descriere ;

Comenzi de manipulare a datelor (LMD)

14

INSERT

insert into Actor values(001, 'Albu', 'Elena', 'Bucuresti',


'elena_albu23@yahoo.com');
insert into Actor values(002, 'Albulescu', 'Mircea', 'Bucuresti',
'm.albulescu@gmail.com');
insert into Actor values(003, 'Mircea', 'Anca', 'Craiova' ,
'ancamircea10@yahoo.com');
insert into Actor values(004, 'Beligan', 'Radu', 'Bucuresti',
'radu.beligan@ymail.com' );
insert into Actor values(005, 'Andrei', 'Violeta', 'Buzau',
'vio_andrei1290@yahoo.com');
insert into Actor values(006, 'Dafinescu', 'Cezara', 'Bucuresti',
'cezara.d@ymail.com');
insert into Actor values(007, 'Dinica', 'Gheorghe', 'Bucuresti',
'gh_dinica@gmail.com');
insert into Actor values(008,'Cocea', 'Dina', 'Suceava', 'dina27@yahoo.com');
insert into Actor values(009, 'Marcel', 'Cecilia', 'Campulung',
'cecilia_marcel@yahoo.com');
insert into Actor values(010,'Bilau', 'Andreea', 'Slatina',
'andreea_b19@yahoo.com');
insert into Actor values(011, 'Kovacs', 'Iani', 'Covasna',
'Kovacs.ianus@ymail.com');

15

insert into Actor values(012, 'Sichitiu', 'Nicoleta', 'Tg-Jiu',


'sichi_nico@yahoo.com');
insert into Actor values(013, 'Antonie', 'Cristian',
'TgMures','cristi_antonie14@yahoo.com');
insert into Actor values(014, 'Velican', 'Radu', 'Costanta',
'radu_ve03@gmail.com');
insert into Actor values(015, 'Avram', 'Corina', 'Focsani',
'corina.avram2005@yahoo.com');

16

17

insert into Piesa values( 1000, 'Barfe, zvonuri si minciuni' , 45 );


insert into Piesa values( 1101, 'Dineu cu prosti' , 57 );
insert into Piesa values( 1078, 'Egoistul' , 80 );
insert into Piesa values( 1004, 'Idolul si Ion Anapoda' ,75 );
insert into Piesa values( 1022, 'Livada de visini' , 50 );
insert into Piesa values( 1307, 'Napasta' ,63 );
insert into Piesa values( 1808, 'Revizorul' , 57 );
insert into Piesa values( 1070, 'Scrisoarea' , 66 );
insert into Piesa values( 1043, 'Sinucigasul' , 92 );
insert into Piesa values( 1002, 'Baiatul din ultima banca' , 43);
insert into Piesa values( 1628, 'Conul Leonida fata cu reactiunea' ,104 );
insert into Piesa values( 1206, 'Doi x doi' ,78 );
insert into Piesa values( 1477, 'Dor de Eminescu' , 55 );
insert into Piesa values( 1216, 'Fata din curcubeu' ,67 );
insert into Piesa values( 1199, 'Inca-i bine!' ,60 );
insert into Piesa values( 1055, 'Scara pisicii' ,78 );
insert into Piesa values( 1214, 'Un duel' , 105 );
insert into Piesa values( 1017, 'Nebun din dragoste' ,110 );

18

19

insert into Autor values( 204, 'Michailov', 'Mihaela', to_date('10-10-1813', 'ddmm-yyyy'), 'Rusia');
insert into Autor values( 265, 'Modreanu ', 'Cristina', to_date('12-06-1969' ,
'dd-mm-yyyy)', 'Romania');
insert into Autor values( 303, 'Masek', 'Vlad', to_date('04-07-1912', 'dd-mmyyyy') , 'Olanda');
insert into Autor values( 308, 'Massaci', 'Ernest', to_date('15-04-1975' ,'ddmm-yyyy'), 'Italia');
insert into Autor values( 180, 'Godun', 'Jaroslaw', to_date('26-10-1842', 'ddmm-yyyy') , 'Polonia');
insert into Autor values( 215, 'Manutiu', 'Anca', to_date('13-01-1980', 'ddmm-yyyy') , 'Romania');
insert into Autor values( 222, 'Sociu', 'Ionut', to_date('17-MAR-1966','dd-mmyyyy') , 'Romania');
insert into Autor values( 345, 'Kosinski', 'Darius',to_date( '20-AUG-1945', 'ddmm-yyyy'), 'Polonia');
insert into Autor values( 283, 'Marinescu', 'Ciprian', to_date('19-APR-1971',
'dd-mm-yyyy'), 'Romania');
insert into Autor values( 156, 'Patureau', 'Mirella', to_date('22-SEP-1959', 'ddmm-yyyy'), 'Romania');
insert into Autor values( 104, 'Caragiale', 'Ion-Luca', to_date('25-MAR-1885',
'dd-mm-yyyy'), 'Romania');
insert into Autor values( 112, 'Nicolau', 'Valentin', to_date('28-SEP-1870', 'ddmm-yyyy'), 'Romania' );
insert into Autor values( 167, 'Sararu', 'Alexandra', to_date('03-FEB-1982',
'dd-mm-yyyy'), 'Romania');

20

insert into Autor values( 346, 'Caramitru ', 'Ion', to_date('09-MAR-1942', 'ddmm-yyyy'), 'Romania');
insert into Autor values( 378, 'Goga ', 'Claudiu', to_date('10-SEP-1953', 'ddmm-yyyy'), 'Romania');

21

insert into Inregistrare values(500, 1628,104 );


insert into Inregistrare values(501, 1000, 215);
insert into Inregistrare values(502,1101, 345);
insert into Inregistrare values(503, 1078, 308);
insert into Inregistrare values(504, 1004, 204);
insert into Inregistrare values(505, 1022, 265);
insert into Inregistrare values(506, 1307, 303);
insert into Inregistrare values(521, 1808, 180);
insert into Inregistrare values(534, 1070,222 );
insert into Inregistrare values(526, 1043, 283);
insert into Inregistrare values(516, 1002, 156);
insert into Inregistrare values(510, 1206, 112);
insert into Inregistrare values(509, 1477, 167);
insert into Inregistrare values(576, 1216, 346);
insert into Inregistrare values(569, 1199, 378);
insert into Inregistrare values(519, 1055, 204);
insert into Inregistrare values(529, 1214, 112);
insert into Inregistrare values(527, 1017, 345);

22

insert into Reprezentatie values(800, 1000, '08-04-2013', '17:00' );


23

insert into Reprezentatie values(801, 1101, '08-04-2013', '18:00');


insert into Reprezentatie values(802, 1017,'08-04-2013', '19:00');
insert into Reprezentatie values(803, 1214, '09-04-2013', '17:00');
insert into Reprezentatie values(805, 1055, '09-04-2013', '19:10');
insert into Reprezentatie values(806, 1199, '09-04-2013','20:45');
insert into Reprezentatie values(807, 1216, '10-04-2013', '16:00');
insert into Reprezentatie values(808, 1477, '10-04-2013','17:25');
insert into Reprezentatie values(809, 1206, '10-04-2013','18:30');
insert into Reprezentatie values(810, 1628, '10-04-2013','20:00');
insert into Reprezentatie values(811, 1002, '11-04-2013', '16:00');
insert into Reprezentatie values(812, 1043, '11-04-2013','16:55');
insert into Reprezentatie values(813, 1070, '11-04-2013','18:40');
insert into Reprezentatie values(814, 1808, '11-04-2013','20:00');
insert into Reprezentatie values(815,1307, '12-04-2013', '16:00');
insert into Reprezentatie values(816,1022,'12-04-2013','17:15');
insert into Reprezentatie values(817,1004,'12-04-2013','18:15');
insert into Reprezentatie values(818,1078,'12-04-2013','19:40');

24

25

insert
insert
insert
insert

into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(1,800);
values(2, 800);
values(3,800);
values(4,800);

insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(2, 801);
values(8,801);
values(10,801);
values(11,801);
values(15,801);
values(12,801);
values(9,801);

insert
insert
insert
insert

into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(15,802);
values(14,802);
values(13,802);
values(12,802);

insert
insert
insert
insert
insert
insert

into
into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(15,803);
values(1,803);
values(2,803);
values(6,803);
values(8,803);
values(4,803);

insert
insert
insert
insert
insert

into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(5,804);
values(6,804);
values(7,804);
values(8,804);
values(9,804);

insert
insert
insert
insert

into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(10,805);
values(11,805);
values(12,805);
values(13,805);

insert into Evidenta_Spectacol values(13, 806);


insert into Evidenta_Spectacol values(14,806);
26

insert
insert
insert
insert

into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(15,806);
values(5,806);
values(9,806);
values(2,806);

insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(3,807);
values(4,807);
values(6,807);
values(7,807);
values(8,807);
values(15,807);
values(14,807);

insert
insert
insert
insert
insert

into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(13,808);
values(1,808);
values(9,808);
values(10,808);
values(3,808);

insert
insert
insert
insert
insert

into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(1,809);
values(11,809);
values(12,809);
values(15,809);
values(4,809);

insert
insert
insert
insert
insert

into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(7,810);
values(8,810);
values(4,810);
values(5,810);
values(15,810);

insert into Evidenta_Spectacol values(3,811);


insert into Evidenta_Spectacol values(11,811);
insert into Evidenta_Spectacol values(12,811);

insert
insert
insert
insert
insert

into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(7,812);
values(8,812);
values(9,812);
values(1,812);
values(15,812);

27

insert
insert
insert
insert
insert

into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(1,813);
values(6,813);
values(10,813);
values(3,813);
values(4,813);

insert
insert
insert
insert

into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(1,814);
values(2,814);
values(3,814);
values(9,814);

insert
insert
insert
insert
insert
insert

into
into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(10,815);
values(11,815);
values(12,815);
values(2,815);
values(4,815);
values(6,815);

insert
insert
insert
insert
insert

into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(1,816);
values(3,816);
values(5,816);
values(7,816);
values(9,816);

insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(2,817);
values(4,817);
values(6,817);
values(8,817);
values(10,817);
values(12,817);
values(14,817);

insert
insert
insert
insert
insert
insert

into
into
into
into
into
into

Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol
Evidenta_Spectacol

values(4,818);
values(7,818);
values(10,818);
values(13,818);
values(15,818);
values(11,818);

28

(deoarece sunt foarte multe, am atasat print-ul doar pentru prima


parte)

29

Actualizarea datelor-comanda UPDATE


1. Modificati numele , respectiv prenumele autorului a carui data
de nastere este
19-04-1971 in Autor Consacrat
update Autor
set nume= 'Autor',
prenume= 'Consacrat'
where data_nastere = to_date('19-04-1971', 'dd-mm-yyyy') ;

2. Diminuati cu 10 min durata piesei cu id-ul 1628.


update Piesa
set durata = durata -10
where id= 1628;

30

3. Modificati in Razboi si pace titlui pieselor/piesei cu o durata


mai mare de 40 de min, dar mai mica de 50 de min.
update Piesa
set titlu = 'Razboi si pace'
where durata between 40 and 50 ;

31

4. Redenumiti piesa cu id-u 1000 in Domnisoara Cristina si


piesa cu id-ul 1002 in
Nebun de alb
update Piesa
set titlu = 'Nebun de Alb'
where id=1002;
update Piesa
set titlu = Domnisoara Cristina
where id=1000;

5. Setati numele Popovici pentru actorul care provine din TgJiu.


update Actor
set nume= 'Popovici'
where oras ='Tg-Jiu';

32

6. Sa se adauge coloana varsta in tabela Autor si sa se


completeze automat.
alter table Autor
add ( varsta number(3));
update Autor
set varsta= (extract(year from sysdate)- extract(year from
data_nastere));

Interogari
1. Afisati numele si prenumele actorilor care nu provin din
Bucuresti sub forma unei coloane cu titlul contacte_actori
.
select prenume ||' '||nume Contacte_actori
from Actor
33

where oras not like 'Bucuresti';

2. Identificati piesa cu durata maxima.


select titlu
from Piesa
where durata = (select max(durata) from Piesa);

3. Identificati durata minima, durata maxima si durata medie a


pieselor jucate in cele 5 zile de festival. Denumiti rezultatele
Durata_max, Durata_min , respectiv Durata_medie.
Trunchiati rezultatul la intreg.
select trunc(max(durata)) as "Durata_max",
trunc(min(durata)) as "Durata_min",
trunc(avg(durata)) as "Durata_medie"
from Piesa;

4. Sa se afiseze toti autorii nascuti inainte de 1900.

34

select prenume||' '||nume as " Nume si prenume"


from Autor
where extract(year from data_nastere) < 1900;

5. Sa se afiseze numele si prenumele autorului piesei din


inregistrarea cu nr 500.
select prenume||' '||nume as " Nume si prenume"
from Autor
where id= ( select id_autor
from Inregistrare
where id =500 );

6. Sa se afiseze titlul piesei din inregistrarea cu nr 500.


select titlu
from Piesa
where id= ( select id_piesa
from Inregistrare
where id =500 );

7. Sa se determine numarul total al evidentelor spectacolelor.


select count(id_actor) as " Numar total"
from Evidenta_spectacol ;
35

8. Sa se determine numele si prenumele tuturor actorilor care


joaca in piesa Un duel
select prenume||' '||nume as " Nume si prenume"
from Actor
where id in (select id_actor
from Evidenta_spectacol
where id_reprezentatie = (select id
from reprezentatie
where id_piesa= (select id
from piesa
where titlu = 'Un duel')
))
;

9. Sa se determine cati actori joaca in fiecare piesa


select count(a.id) as " Numar actori", p.titlu
from actor a, piesa p, reprezentatie r, evidenta_spectacol ev
where a.id=ev.id_actor
and ev.id_reprezentatie =r.id
36

and r.id_piesa=p.id
group by p.titlu;

10.
Sa se afiseze pe doua coloane titlul pieselor si autorul
corespunzator acestora.

select p.titlu, a.nume||' '||a.prenume as " Nume si prenume"


from piesa p, autor a, inregistrare i
where p.id=i.id_piesa
and i.id_autor=a.id;

37

11.
Sa se afiseze toate piesele ale caror autori nu sunt
romni si sa se specifice tara de origine a acestora.
select p.titlu , a.tara
from piesa p, inregistrare i, autor a
where p.id= i.id_piesa
and i.id_autor =a.id
and a.tara not like 'Romania' ;

12.
Stabiliti care este numarul de piese in care joaca fiecare
actor.
38

select count(r.id) as " Numar piese", a.prenume||' '||a.nume as


"Actori"
from actor a, evidenta_spectacol ev, reprezentatie r
where a.id =ev.id_actor
and ev.id_reprezentatie =r.id
group by a.nume, a.prenume ;

13. Pentru actorii care nu sunt din Bucuresti sa se afiseze


adresa de email, pentru restul nu se va afisa nimic.
select prenume||' '||nume as " Nume si prenume", case oras
when 'Bucuresti' then '-'
else adresa_email
end Contacte
from actor ;

39

14. Pentru autorii nascuti in luna ianuarie sa se afiseze un


mesaj de forma La multi ani!
select prenume||' '||nume as " Nume si prenume"
,case (extract(month from data_nastere))
when 1 then 'La multi ani!'
else '-'
end sarbatoriti
from autor;

40

15. Sa se afiseze toate informatiile despre piesele care au o


durata mai mare decat piesa Egoistul
select id, titlu, durata
from piesa
where durata > (select durata
from piesa
where titlu = 'Egoistul'
);

Tabele virtuale

1. Creati o tabela virtuala in care sa se regaseasca informatii


despre piesele jucate(doar titlul si durata) a caror durata este
mai mare decat durata medie; vizualizati aceasta tabela.
create or replace view Program_Spectacol
as
select titlu, durata
from piesa
where durata > (select avg(durata)
from piesa
);
select *
from program_spectacol ;

41

2. Stergeti tabela virtuala construita anterior.


drop view program_spectacol ;

Indecsi
1. Creati un index pentru coloana titlu din tabela Piesa.
create index index_piesa
on piesa(titlu) ;

2. Stergeti indexul creat anterior.


drop index index_piesa ;
42

Sinonime
1. Creati un sinonim pentru tabela Evidenta_Spectacol, apoi
vizualizati-l.
create synonym ev for evidenta_spectacol ;
select * from ev;

2. Stergeti sinonimul creat anterior.


drop synonym ev;

43

S-ar putea să vă placă și