Sunteți pe pagina 1din 8

A.

Drop table aripi_inchisoare cascade constraints; Drop table gardieni cascade constraints; Drop table detinuti cascade constraints; Drop table tratanente cascade constraints; Drop table psihologi cascade constraints;

Create table aripi_inchisoare ( Cod_aripa_inchisoare number(8) constraint pk_aripi_inchisoare primary key, Den_aripa varchar2(10) not null, Nr_detinuti number(8) not null, Nr_gardieni number(8) not null );

Insert into aripi_inchisoare values(400,aripa nord,2220,80); Insert into aripi_inchisoare values(401,aripa sud,1500,50); Insert into aripi_inchisoare values(402,aripa est,1800,60); Insert into aripi_inchisoare values(403,aripa vest,1950,68);

Create table gardieni ( cod_gardian number(6) constraint pk_gardieni primary key, cod_aripa_inchisoare number(8) not null nume varchar2(10) not null, prenume varchar 2(10) not null, cnp number(13) not null, adresa varchar2(20) not null, salariu number (10) not null, constraint fk_aripi_inchisoare foreign key(cod_aripa_inchisoare) references aripi_inchisoare (cod_aripa_inchisoare));

Insert into gardieni values(24,400,Ionescu,Marian,1600404123456,Str Valea Iasului,Bl D 12, Sc A, Ap 18, Bucuresti,700); Insert into gardieni values (85,401,Popescu,Ion,1540103245783,Str Stefan Cel Mare, Nr 2,Bucuresti,720); Insert into gardieni values(143,402,Marcu,Gabriel,1700809666987,Str Progresului,Bl A4,Sc B,Ap 20, Bucuresti,650); Insert into gardieni values(200,403,Petrescu,Valentin,1600405112256,Srt Mihai Eminescu, nr 24,Bucuresti,700);

Create table detinuti ( cod_detinut number(8) constraint pk_detinuti primary key, cod_aripa_inchisoare number(8) not null, nume varchar2(10) not null, prenume varchar 2(10) not null, peseapsa number(6) not null, cauza acuzarii varchar2(15) not null, data arestarii date default sysdate, constraint fk_aripi_inchisoare foreign key(cod_aripa_inchisoare) references aripi_inchisoare(cod_aripa_inchisoare));

Insert into detinuti values(14627,401,Iliescu,Constantin,25,Crima,09.08.2001); Insert into detinuti values(6038,403,Paraschivescu,Petre,2,Furt,12.03.2005); Insert into detinuti values (57265,400,Genoiu, Viorel,3,Trafic Droguri, 03.04.2006 ); Insert into detinuti values (167335,402,Stefan,Vasile,5,Viol,05.04.2003); Insert into detinuti values(1672,401,Iftimie,Marius,15,Trafic Carne Vie , 12.04.1998);

Create table tratamente ( cod_detinut number(8) not null, cod_psiholog varchar2(10) not null, data _inceperii_trat date default sysdate, constraint fk_detinuti foreign key(cod_detinut) references detinuti (cod_detinut); constraint fk_psihologi foreign key(cod_psiholog) references psihologi (cod_psiholog);

Insert into tratamente values (14627,401,19.08.2001); Insert into tratamente values (1543,403,16.07.1994); Insert into tratamente values (5689,400,18.07.1998); Insert into tratamente values(5678,402,14.03.2000);

Create table psihologi ( cod_psiholog varchar2(10) constraint pk_psihologi primary key, cod_aripa_inchisoare number(8) not null, nume varchar2(10) not null, prenume varchar2(10) not null, cnp number(13) not null, adresa varchar2(20)not null, salariu number(8) not null, constraint fk_aripi_inchisoare foreign key(cod_aripa_inchisoare) references aripi_inchisoare(cod_aripa_inchisoare));

Insert into psihologi values(alfa,400,Popa,Catalin,1710102167452,Str Alexanru Vlahuta,nr 41,Bucuresti,2000); Insert into psihologi values (eta,403,Ilie,Marcel,1650809145276,Str Comorilor nr 10,Bucuresti,2500); Insert into psihologi values (delta,401,Frujina,Alexandru,1720203987654,Str Aleea Castanilor nr 13,Bucuresti,2000 ); Insert into psihologi values(gama,402,Pavel,Cosmin,1540205124543,Str Chihlimbar nr 30,Bucuresti,2700);

B. 1. Sa se redenumeasca tabela detinuti in puscariasi. Alter table detinuti rename to puscariasi;

2. Sa se adauge in tabela psihologi coloana Email varchar2(10). Alter table psihologi add (Email varchar2(10)); 3. Se adauga in tabela detinuti o restrictie de integitate cu numele vf_pedeapsa asupra coloanei pedeapsa , care sa nu permita introducerea valorilor mai mici de 1 . Alter table detinuti add (constraint ck_vf_pedeapsa check (pedeapsa >1 ); 4. Sa se dezactiveze restrictia vf_pedeapsa. Alter table detinuti disable constraint check_vf_pedeapsa. 5. Sa se modifice proprietatile campului nume din tabela psihologi astfel incat lungimea sa fie de 20. Alter table psihologi modify (nume varchar2(20)).

C. 1. Sa se stearga din tabela detinuti pe cei care au pedeapsa < de 2 ani. Delete from detinuti where pedeapsa <2; 2. Sa se actualizele salariul psihologului cu cod alfa cu salariul psihologului cu cod delta. Update psihologi set (salariu)=( select salariu from psihologi where cod_psiholog =delta) where cod_psiholog=alfa; 3. Sa se scada cu 3 ani pedeapsa detinutului cu numele Iliescu Constantin. Update detinuti set(pedeapsa)= pedeapsa-3 where nume=Iliescu and where prenume=Constantin;

4. Sa se stearga din tabela gardieni pe cei care au salariul >700. Delete from gardieni where salariu> 700. 5. Sa se schimbe numele aripei_inchisorii cu codul 400 cu numele aripei_inchisorii cu codul 402. Update aripi_inchisoare set nume=(select nume from aripi_inchisoare where cod_aripa_inchisoare =402 ) where cod_aripa_inchisoare=400;

D. 1. Sa se selecteze detzinutii care sunt in aceeasi aripa a inchisorii cu detinutul Genoiu Viorel. Select * from detinuti where cod_aripa_inchisoare=(select cod_aripa_inchisoare from detinuti where nume=Genoiu and where prenume=Viorel); 2. Sa se selecteze detinutii care au inceput tratamentul psihologic in anul 2002. Select detinuti.nume, tratament.data_inceperii_trat from detinuti, tratamente Where detinuti.cod_detinut=tratamente.cod_detinuti and tratamente.data_inceperii_trat like % 02; 3. Sa se afiseze codul detinutului, numele detinutului,prenumele detinutului si data_inceperii trat corespunzatoare. Select detinuti.cod_detinut, detinuti.nume, detinuti.prenume, tratamente.data_inceperii_trat from detinuti, tratamente where detinuti.cod_detinut=tratamente.cod_detinut; 4. Sa se selecteze numai gardienii care au salariu cuprins intre 600 si 700. Select * from gardieni where salariu =(between 600 and 700);

5. Sa se afiseze numarul de psihologi al caror salariu >2000. Select count(*) nr_psihologi from psihologi where salariu>2000. 6. Sa se afiseze in ordine alfabetica detinutzii acuzati pentru aceeasi fapta si care au inceput tartamenul psihologic luna trecuta. Select detinuti.cod_detinuti, detinuti.nume, detinuti.cauza_acuzarii, tratamente.data_inceperii_trat from detinuti , tratamente where detinuti.cod_detinut=tratamente.cod_detinut Group by detinuti.cauza_acuzarii Having(select tratamente.data_inceperii_trat from tratamente where round(months_between(sysdate,data_inceperii_trat)=1) Order by nume ASC; 7. Sa se afiseze psihologii care au acelasi prenume si care au inceput tratamente cu detinuti si in data de 01.02.2001. Select psihologi.cod_psiholog, psihologi.prenume, tratamente.data_inceperii_trat From psihologi, tratamente where psihologi.cod_psiholog=tratamente.cod_psiholog Group by psihologi.prenume Having (tratamente.data_inceperii_trat= to_date(01.02.2001.mm.dd.yyyy);

8. Sa se afiseze toate inregistrarile din tabela aripi_inchisoare Select* from aripi_inchisoare;

9. Sa se afiseze numele si prenumele gardianului al carui CNP=1670201112233. Select (nume,prenume) from gardieni where cnp=1670201112233; 10. Sa se calculeze cu cat se reduce pedeapsa detinutilor dupa primul an ,pt comportament bun ,in functie de cauza acuzarii. Daca un detinut se comporta foarte bine in inchisoare dupa primul an primeste o reducere a pedepsei astfel :

-daca a fost acuzt de crima atunci reducerea este de 1 luna; -daca a fost acuzat de viol atunci reducerea este de 2 luni ; - daca a fost acuzat de furt reducerea este de 3 luni; Select detinuti.nume, detinuti.cauza acuzarii, Decode(lower(detinuti.cauza_acuzarii),furt,3,viol,2,crima,1,0) reducere from detinuti; 11. Sa se calculeze cu cat se reduce pedeapsa detinutilor dupa primul an ,pt comportament bun ,in functie de cauza acuzarii. Daca un detinut se comporta foarte bine in inchisoare dupa primul an primeste o reducere a pedepsei astfel : -daca a fost acuzt de crima atunci reducerea este de 1 luna; -daca a fost acuzat de viol atunci reducerea este de 2 luni ; - daca a fost acuzat de furt atunci reducerea este de 3 luni; Select detinuti.nume, detinuti.cauza_acuzarii, Case when lower(detinuti.cauza_acuzarii)=furt then 3 When lower(detinuti.cauza_acuzarii)=viol then 2 When lower(detinuti.cauza_acuzarii )=crima then 1 Else 0 end reducere From detinuti; 12. Sa se afiseze gardienii care au salariul <500.. Select * from gardieni where salariu<500; 13. Sa se afiseze toti detinutii ale caror nume incep cu litera b si toti psihologii ale caror nume incep cu litera p. Select nume, prenume from detinuti where substr(nume,1,1)=B Union Select nume ,prenume from psihologi where (nume,1,1)=P; 14. Sa se afiseze toti detinutii care au inceput tratamentul psihologic in primele 3 luni ale anului 1999 mai putin cei care au inceput tratamentul psihologic intre 15. 02.1999 si 20.02.1999.

Select detinuti.nume, tratament.data_inceperii_trat, from detinuti, tratamente Where detinuti.cod_detinuti=tratamente.cod_detinuti and tratamente.data_inceperii_trat between ta_date(01.01.1999,mm.dd.yyyy) and to_date(03.31.1999,mm.dd.yyyy) Minus

Select detinuti.nume, tratamente.data_inceperii_trat from detinuti, tratamente Where detinuti.cod_detinut=tratamente.cod_detinut and tratamente.data_inceperii_trat Between to_date(02.15.1999,mm.dd.yyyy) and to_date(02.20.1999,mm.dd.yyyy); 15. Sa se afiseze gardienii din aripa de vest care sunt nascuti in anul 1970. Select * from gardieni where cod_aripa_inchisorii=( select cod_aripa_inchisorii from aripi_inchisoare where nume =aripa vest) where cnp=_70%).

E. 1. Sa se creeze o tabela virtuala care sa contina numele si prenumele psihologilor care se ocupa de detinutii din aripa de est. Create table psyho as select (nume, prenume) from psihologi where cod_aripa_inchisoare=(select cod_aripa_inchisoare from aripi_inchisoare where nume=aripa est) ; Desc psyho;

2. Sa se creeze o tabela virtuala care sa contina numele ,prenumele si Cnp gardienilor care au codurile 25 si 73. Create view extractgard as select(nume,prenume, cnp) from gardieni Where cod_gardian in(25,73); Select* from extractgard;

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