pasiinviata.files.wordpress.com · web viewsa se defineasca restrictiile de cheie primara pentru...

25
ACADEMIA DE STUDII ECONOMICE BUCURESTI FACULTATEA DE CIBERNETICA,STATISTICA SI INFORMATICA ECONOMICA PROIECT - BAZE DE DATE - Student: Ivascu Claudia-Anitta An.II Seria.C Grupa : 1034

Upload: dangliem

Post on 26-Apr-2018

214 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

ACADEMIA DE STUDII ECONOMICE BUCURESTI

FACULTATEA DE CIBERNETICA,STATISTICA SI INFORMATICA ECONOMICA

PROIECT - BAZE DE DATE -

Student: Ivascu Claudia-Anitta An.II Seria.C Grupa : 1034

BUCURESTI,2010

Page 2: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Initial baza de date avea urmatoarele caracteristici:

ANGAJATI:

CODANUMEADRESA : LOC

STR structura de grup

DATA_ANG CODS FUNCTIE

SAL CODDEP

DEPARTAMENTE :

CODDEPDEN_DEP

PRODUSE:

CODPDENPPRETSTOC

CLIENTI:

CODCDENCLOC

COMENZI:

NRCOMCODCDATA_IDATA_LVAL

RAND_COM

NRCOMCODPCANT

Page 3: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Se elimina structurile de grup din tabela ANGAJAT.

ANGAJATI: CODA NUME LOC

STR DATA_ANG CODS FUNCTIE

SAL CODDEP

Datorita faptului ca intre campurile tabelelor nu mai exista dependente de nici un alt fel (functionale, incomplete sau tranzitive) putem considera tabelele ca fiind in FN3.

Baza de date contine urmatoarele tabele :

ANGAJATI ( coda number(3) primary key, nume varchar2(30) , loc varchar2(20), str varchar2(10), data_ang date, cods number(3): Angajati , functie varchar2(30), sal number(5),coddep number(3) : Departamente)DEPARTAMENTE (coddep numbe(3) primary key, den_dep varchar2(30))PRODUSE (codp varchar2(3) primary key, denp varchar2(30), pret number(5), stoc number(5), coddep numbe(3):Departamente)CLIENTI (codc number(3) primary key, denc varchar2(50), loc varchar2(20))COMENZI(nrcom number(5) primary key, data_i date, data_l date, val number (10), codc number(3):Clienti)RAND_COM (nrcom number(5):Comenzi, codp varchar2(3): Produse, cant number(5))

Definirea legaturilor :

- Legatura dintre Departamente si Angajati este de tipul 1: m (un angajat apartine unui singur department, un departament are mai multi angajati)

- Legatura dintre Departamente si Produse este de tipul 1:m ( un produs este oferit de un singur department , un department contine mai multe produse)

- Legatura dintre Produse si Comenzi este de tipul m:m , relatie despartita in relatie 1:1( intre Produse si Rand_com) si 1:m (intre Rand_com si Comenzi)

- Legatura dintre Clienti si Comenzi este de tipul 1:m ( un client poate face mai multe comenzi insa o comanda este data de un singur client)

*Alte rectrictii le vom defini ulterior in cerinte.

Page 4: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

SCHEMA CONCEPTUALA

ANGAJATI

CODA NUME LOC STR DATA_ANG CODS FUNCTIE SAL CODDEP

PRODUSE

CODP DENP PRET STOC CODDEP DEPARTAMENT

CODDEP DEN_DEP

RAND_COM

NRCOM CODP CANT

COMENZI

NRCOM CODC DATA_I DATA_L VAL

CLIENTI

CODC DENC LOC

Page 5: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

CREAREA SI GESTIUNEA TABELELOR

1. Sa se creeze tabelele cu structurile de mai sus.

create table angajati (coda number(3) constraint PK_ang primary key, nume varchar2(30), loc varchar2(20), str varchar2(10), data_ang date, cods number(3) references angajati(coda) , functie varchar2(30), sal number(5), coddep number(3) references departamente(coddep);

create table departamente (coddep numbe(3) constraint PK_dep primary key, den_dep varchar2(30)) create table produse(codp varchar2(3) constraint PK_prod primary key, denp varchar2(30), pret number(5), stoc number(5), coddep numbe(3) references departamente(coddep));

create table clienti(codc number(3) constraint PK_cl primary key, denc varchar2(50), loc varchar2(20));

create table comenzi(nrcom number(5) constraint PK_com primary key, data_i date, data_l date, val number (10), codc number(3) references client(codc));

create table rand_com(nrcom number(5) references comenzi(nrcom), codp varchar2(3) references produse(codp), cant number(5));

Page 6: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

2. Sa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom)

alter table Rand_com add constraint PK_pc primary key (nrcom,codp);

alter table Rand_com add constraint FK_pc_prod references Produse (codp);alter table Rand_com on delete set null add constraint FK_pc_com foreign key (nrcom)

references Comenzi (nrcom) on delete cascade;

3. Sa se adauge restrictia entitatii (NOT NULL) pentru tabela Produse , atributul denp.

alter table Produse add constraint NN_codp

check ("codp" IS NOT NULL);

4. Sa se adauge restrictia de unicitate pentru atributele codc si coda din tabelele Clienti, respective Angajati.

alter table Clienti add constraint Un_cc unique(codc);

alter table Angajati add constraint Un_ang unique(coda);

5. Sa se marcheze atributul str din tabela Angajati ca atribut neutilizat.

alter table Angajati set unused(str);

6. Sa se stearga atributul marcat ca neutilizat.

alter table Angajati drop unused columns;

Page 7: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

ACTUALIZAREA DATELOR

1. Scriptul de adaugare de inregistrari :

Delete from Angajati;Insert into Angajati values ( ‘1’, ‘Negrea Dorin’, ‘Hunedoara’, to_date ('01-03-2000', 'dd-mm-yyyy'), null , ‘Sef Depozit’, ‘1000’,’009’);Insert into Angajati values ( ‘2’, ‘Barbu Mihai’, ‘Cluj’, to_date ('17-06-2000', 'dd-mm-yyyy'), ‘1’, ‘Functionar Depozit’, ‘800’,’009’);Insert into Angajati values ( ‘3’, ‘Demea Monica’, ‘Iasi’, to_date ('21-07-2000', 'dd-mm-yyyy'), null , ‘Sef Vanzari’, ‘1000’,’006’);Insert into Angajati values ( ‘4’, ‘Vantu Catalin’, ‘Deva’, to_date ('14-01-2001', 'dd-mm-yyyy'), ‘3’, ‘Functionar Vanzari’, ‘800’,’006’);Insert into Angajati values ( ‘5’, ‘Marin Ion’, ‘Galati’, to_date ('02-11-2000', 'dd-mm-yyyy'), ‘1’ , ‘Functionar Depozit’, ‘800’,’009’);Insert into Angajati values ( ‘6’, ‘Perijoc Daniel’, ‘Hunedoara’, to_date ('13-09-2001', 'dd-mm-yyyy'), null , ‘Sef Contabilitate’, ‘1000’,’003’);Insert into Angajati values ( ‘7’, ‘Flore Andreea’, ‘Bucuresti’, to_date ('17-11-2001', 'dd-mm-yyyy'), ‘6’ , ‘Economist’, ‘900’,’003’);Insert into Angajati values ( ‘8’, ‘Popescu Ion’, ‘Arad’, to_date ('01-09-2002', 'dd-mm-yyyy'), ‘1’ , ‘Functionar Depozit’, ‘800’,’009’);Insert into Angajati values ( ‘9’, ‘Lungu Lucian’, ‘Alexandria’, to_date ('03-12-2004', 'dd-mm-yyyy'), ‘3’ , ‘Functionar Depozit’, ‘800’,’009’);Insert into Angajati values ( ‘10’, ‘Munteanu Irina’, ‘Bucuresti’, to_date ('09-04-2006', 'dd-mm-yyyy'), ‘1’, ‘Functionar Vanzari’, ‘800’,’006’);

Delete from Departamente;Insert into Departamente values (‘003’, ‘Contabilitate’);Insert into Departamente values (‘006’, ‘Vanzari’);Insert into Departamente values (‘009’, ‘Depozit’);

Delete from Produse ;Insert into Produse values (‘V44’, ‘Vobler’, ‘25’ , ‘300’ , ‘009’);Insert into Produse values (‘L45’, ‘Lansete’, ‘400’ , ‘100’ , ‘009’);Insert into Produse values (‘M46’, ‘Mulinete’, ‘150’ , ‘233’ , ‘009’);Insert into Produse values (‘H47’, ‘Huse’, ‘175’ , ‘200’ , ‘009’);Insert into Produse values (‘CT48’, ‘Cort’, ‘1000’ , ‘44’ , ‘006’);Insert into Produse values (‘B49’, ‘Barca’, ‘850’ , ‘15’ , ‘006’);Insert into Produse values (‘MG50’, ‘Minciog’, ‘30’ , ‘400’ , ‘009’);

Page 8: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Insert into Produse values (‘JV51’, ‘Juvelnic’, ‘17’ , ‘300’ , ‘009’);

Delete from Clienti;Insert into Clienti values ( 011, ‘Gipo’ , ‘Bucuresti’);Insert into Clienti values ( 012, ‘Rapala’ , ‘Arad’);Insert into Clienti values ( 013, ‘BibanFish’ , ‘Cluj’);Insert into Clienti values ( 014, ‘TotalFishing’ , ‘Bucuresti’);Insert into Clienti values ( 015, ‘CrazyFish’ , ‘Timisoara’);Insert into Clienti values ( 016, ‘Pescarul’ , ‘Craiova’);Insert into Clienti values ( 017, ‘Pescarusi’ , ‘Iasi’);Insert into Clienti values ( 018, ‘Campionii’ , ‘Tulcea’);Insert into Clienti values ( 019, ‘Schimano’ , ‘Braila’);

Delete from Comenzi; Insert into Comenzi (nrcom, data_i , data_l, val , codc )

values (1000, to_date ('18-05-2000', 'dd-mm-yyyy') , to_date ('20-05-2000', 'dd-mm-yyyy') ‘450000’, ‘015’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (1444, to_date ('23-05-2001', 'dd-mm-yyyy') , to_date ('20-06-2001', 'dd-mm-yyyy') ‘670000’, ‘011’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (1892, to_date ('12-09-2001', 'dd-mm-yyyy') , to_date ('14-09-2001', 'dd-mm-yyyy') ‘20000’, ‘014’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (1920, to_date ('03-11-2001', 'dd-mm-yyyy') , to_date ('16-11-2001', 'dd-mm-yyyy') ‘50000’, ‘017’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (1988, to_date ('11-01-2002', 'dd-mm-yyyy') , to_date ('24-01-2001', 'dd-mm-yyyy') ‘234900’, ‘019’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2000, to_date ('03-03-2002', 'dd-mm-yyyy') , to_date ('09-03-2002', 'dd-mm-yyyy') ‘640000’, ‘018’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2014, to_date ('15-05-2002', 'dd-mm-yyyy') , to_date ('22-05-2002', 'dd-mm-yyyy') ‘540000’, ‘014’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2231, to_date ('01-09-2002', 'dd-mm-yyyy') , to_date ('10-09-2002', 'dd-mm-yyyy') ‘760000’, ‘012’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )

Page 9: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

values (2280, to_date ('18-10-2002', 'dd-mm-yyyy') , to_date ('27-10-2001', 'dd-mm-yyyy') ‘870000’, ‘017’); Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2300, to_date ('07-01-2003', 'dd-mm-yyyy') , to_date ('17-01-2003', 'dd-mm-yyyy') ‘900000’, ‘019’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2314, to_date ('14-07-2003', 'dd-mm-yyyy') , to_date ('26-07-2003', 'dd-mm-yyyy') ‘470000’, ‘015’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2443, to_date ('09-12-2003', 'dd-mm-yyyy') , to_date ('20-01-2004', 'dd-mm-yyyy') ‘180000’, ‘014’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2458, to_date ('19-04-2004', 'dd-mm-yyyy') , to_date ('30-04-2004', 'dd-mm-yyyy') ‘340000’, ‘012’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2517, to_date ('15-10-2004', 'dd-mm-yyyy') , to_date ('18-10-2004', 'dd-mm-yyyy') ‘280000’, ‘013’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2561, to_date ('18-09-2005', 'dd-mm-yyyy') , to_date ('20-09-2005', 'dd-mm-yyyy') ‘150000’, ‘011’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2584, to_date ('14-03-2006', 'dd-mm-yyyy') , to_date ('23-03-2006', 'dd-mm-yyyy') ‘270000’, ‘017’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2617, to_date ('07-07-2006', 'dd-mm-yyyy') , to_date ('02-08-2006', 'dd-mm-yyyy') ‘310000’, ‘018’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2648, to_date ('24-02-2007', 'dd-mm-yyyy') , to_date ('06-03-2007', 'dd-mm-yyyy') ‘180000’, ‘016’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (2741, to_date ('11-08-2007', 'dd-mm-yyyy') , to_date ('04-09-2007', 'dd-mm-yyyy') ‘287500’, ‘015’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (3011, to_date ('12-01-2008', 'dd-mm-yyyy') , to_date ('13-02-2008', 'dd-mm-yyyy') ‘2125000’, ‘019’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (3344, to_date ('14-07-2008', 'dd-mm-yyyy') , to_date ('13-08-2008', 'dd-mm-yyyy') ‘480000’, ‘013’);Insert into Comenzi (nrcom, data_i , data_l, val , codc )values (4529, to_date ('10-05-2009', 'dd-mm-yyyy') , to_date ('15-05-2009', 'dd-mm-yyyy') ‘620000’, ‘017’);

Page 10: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Delete from Rand_com;Insert into Rand_com(1444, CT48, ‘670’);

Insert into Rand_com(1920, L45, ‘125’); Insert into Rand_com(2014, M46, ‘3600’); Insert into Rand_com(2280, CT48, ‘497’); Insert into Rand_com(2443, CT48, ‘180’); Insert into Rand_com(2458, MG50, ‘11334’); Insert into Rand_com(2561, M46, ‘1866’); Insert into Rand_com(2617, V44, ‘12400’); Insert into Rand_com(2741, JV51, ‘16910’); Insert into Rand_com(3011, B49, ‘2500’);

Page 11: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Comenzile DML

1. Sa se adauge in tabela Clienti_buc informatii despre clientii din Bucuresti. Tabela Clienti_buc are aceeiasi structura ca tabela Clienti.

create table clienti_buc(codc number(3) constraint PK_cl primary key, denc varchar2(50), loc varchar2(20)); insert into client_buc select * from Clienti where unitcap(loc)= ‘Bucuresti’;

2. Sa se utilizeze o singura comanda INSERT pentru a incarca in tabela Istorie_sal codul numele si salariul angajatiilor care au un salariu > 900 , iar in tabela Istorie_functie codul numele si functia angajatiilor care au functia Functionar Depozit.

create table istorie_sal(coda number(3) constraint PK_ang primary key , nume varchar2(30), sal number(5));create table istorie_functie(coda number(3) constraint PK_ang primary key , nume varchar2(30), functie varchar2(30)) ;insert allwhen sal>900 theninto istorie_sal values (coda , nume , sal)when functie= “Functionar Depozit” theninto istorie_functie values(coda, nume, functie)select coda , nume, sal, functie from Angajati;

3. Sa se utilizeze o singura comanda insert pentru a incarca in tabela Istorie_functie codul angajatiilor care au functia Functionar Vanzari, in tabela Istorie_sal codul numele si salariul angajatiilor care au salariu egal cu 900 iar in tabela Rest codul celorlalti angajati.Create table Rest(coda number(3) constraint PK_res primary key);Delete from Istorie_functie; Delete from Istorie_Sal;Insert firstWhen functie= “Functionar Vanzari” then into istorie_functie values(coda, nume, functie)when sal=900 then into istorie_sal values (coda , nume , sal)else into rest values(coda)select coda,nume,functie,sal from Angajati;

Page 12: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Comanda Update :

1. Sa se diminueze stocul cu 45 de buc pentru produsul Lanseta.

Update ProduseSet stoc=stoc-45Where denp= ‘Lanseta’;

2. Sa se modifice data de livrare si valoarea comenzii 1000 – comanda 1000 sa aiba acelasi termen de livrare si valoare cu comanda 1444)

Update ComenziSet data_l=(select data_l from comenziWhere nrcom=1444),Val=(select val from comenziWhere nrcom=1444)Where nrcom=1000;

3. Sa se modifice salariul angajatiilor cu functia “Functionar Depozit”, la 750.

Update AngajatiSet sal=750 Where functia=’Functionar Depozit’;

Comanda Delete :

4. Sa se stearga toti clientii din Bucuresti.

Delete from Clienti where unitcap(loc)= ‘Bucuresti;

- Sa se anuleze comanda anterioara-Rollback;

Exemple de interogari variate

Comanda Select :

Page 13: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

1. Sa se afiseze toate produsele , ordonate crescator dupa denumire.

Select * from produseOrder by denp desc;

2. Sa se simuleze o proiectie pe tabela Clienti.

Select distinct loc from client;

3. Sa se simuleze o selectie pe tabela Angajati.

Select * from AngajatiWhere coddep= ‘009’ ;

4. Sa se simuleze un produs cartezian intre tabelele Clienti si Comenzi.

Select denc,nrcom from client , comenzi;

5. Sa se afiseze comenzile a caror valoare este intre 500000 si 900000.

Select nrcom from comenziWhere val between 500000 and 900000

6. Sa se afiseze codul persoanei , numele concatenate cu codul si lungimea atrubutului nume , numai pentru persoanele a caror nume are a doua litera “e”.

Select coda,concat(coda,nume), length (nume)From AngajatiWhere nume like “ e%”;

7. Sa se afiseze numele angajatiilor la care ultima litera din nume este litera “n”.

Select nume from AngajatiWhere substr(nume,-1,1)= ‘n’;

8. Sa se afiseze comanda a carei valoare este 620000 si perioada de timp corespunzatoare in saptamani intre data incheierii comenzii si data curenta.

Select nrcom, (sysdate-data_i)/7 sapt from comenzi

Page 14: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Where val= 620000;

9. Sa se afiseze comenzile cu termenul de livrare in luna septembrie.

Select nrcom from comenziWhere extract (month from data_l)=9;

10. Sa se afiseze numele angajatilor care au o vechime mai mare de 5 ani.

Select nume from AngajatiWhere extract(year from sysdate)-extract(year from data_ang)>5;

11. Sa se afiseze pentru toate comenzile , data incheierii comenzii in format “MM/YY

Select nrcom, to_char (data_i, ‘MM/YY’) data from comenzi;

12. Daca produsul este : Vobler se va afisa stocul impartit la 10 Huse se va afisa stocul inmultit cu 1.7 Mulineta se va afisa stocul crescut cu 2%. Pentru celelalte produse stocul ramane acelasi

Select codp , stoc,Case When denp = ‘ Vobler’ then stoc=stoc/10When denp = ‘Huse’ then stoc=stoc*1.7When denp = ‘Mulinete’ then stoc=stoc+soc*2%Else stoc=stocEndFrom Produse;

13. Pentru toate comenzile se adauga 7 luni de la data incheierii comenzii si se afiseaza urmatoarea zi de marti dupa acea data.

Select to_char(next_day(add_months(data_i,7), ‘TUESDAY’);

14. Sa se afiseze pentru fiecare produs , denumirea si valoarea totala a vanzarilor .

Select p.denp denumire , sum(p.pret*r.cant) vanzariFrom produse p , rand_com rWhere p.codp=r.codp

Page 15: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Grup by p.denp;

15. Pentru toate produsele din nomenclatorul de produse , sa se afiseze denumirea si cantitatea totala vanduta.

Select p.denp denumire , sum (r.cant) cantitateFrom produse p , rand_com rWhere p.codp=r.codp(+) Grup by p.denp;

16. Sa e afiseze produsele care nu s-au vandut.

Select p.denp denumireFrom produse p , rand_com rWhere p.codp=r.codp(+) and cant is null

17. Sa se afiseze numele fiecarui angajat si numele sefului direct superior .

Select muncitori.nume || ‘lucreaza pentru’ || sefi.numeFrom Angajati muncitori , angajati sefiWhere muncitori.cods=sefi.coda;

18. Sa se afiseze valoarea maxima , valoarea medie , valoarea minima si valoarea totala pentru comenzile cu termen de livrare in septembrie.

Select avg(val) , max(val) , min(val) , sum(val)From comenziWhere data_l like ‘%09%’;Where extract(month from data_l)=9;

19. Sa se calculeze cantitatea medie vanduta.

Select avg(sum(r.cant)) “cantitatea medie” From produse p , rand_com rWhere p.codp=r.codp(+) grup by p.denp;

20. Sa se afiseze termenul de livrare al ultimei comenzi si termenul de livrare al celei mai vechi comenzi.

Select min(data_l) ultima , max(data_l) veche From comenzi ;

21. Sa se afiseze numarul de produse vandute.

Page 16: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Select count(distinct(codp)) from rand_com;

22. Sa se afiseze cantitatea medie vanduta , numai pentru acele produse a caror cantitate medie vanduta este mai mare decat 1000

Select p.denp denumire , avg(r.cant) cant_medFrom produse p , rand_com r Where r.codp=p.codpGroup by p.denp Having avg(r.cant)>1000;

23. Sa se afiseze persoanele angajate la acelasi department cu Marin Ion.

Select nume from AngajatiWhere coddep=(select coddep from Angajati where nume= ‘Marin Ion’)And nume < > ‘Marin Ion’ ;

24. Sa se afiseze produsele care au cantitatea minima vanduta mai mare decat cea corespunzatoare produsului ‘Cort’

Select p.denp denumire , min(r.cant) cant_minFrom rand_com r , produse p Where r.codp=p.codpGroup by p.denpHaving min(r.cant)>(select min(cant) from rand_com

where copdp=(select codp from produse where denp= ‘Cort’));

25. Sa se afiseze detalii despre angajatii care au acelasi sef si aceeiasi functie cu angajatul care are codul de angajat 2 si 5.

Select coda, functie , cods from AngajatiWhere (functie , cods ) in (select functie, cods from angajati where coda in (2,5))And coda not in (2,5);

26. Sa se afiseze numele , valoarea totala comandata si numarul de comenzi pentru toate produsele care au fost comandate de cel putin 2 ori si a caror valoare totala este diferita de 20000.

Select p.denp , sum(r.cant*p.pret) valoare , count(r.nrcom)From produse p, rand_com rWhere p.codp=r.codp

Page 17: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Having count(r.nrcom)>=2INTERSECTSelect p.denp , sum(r.cant*p.pret) valoare , count(r.nrcom)From produse p, rand_com rWhere p.codp=r.codpHaving sum(r.cant*p.pret) < > 20000;

27. Afisati comenzile care au nr comenzii intre 1000 si 2500 eliminandu-le pe cele care au valoarea 640000 sau 760000.

Select * from comenziWhere nrcom between 1000 and 2500MINUSSelect * from comenziWhere val in (640000,760000);

Gestiunea altor obiecte ale bazei de date

Tabele virtuale :

Page 18: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

1. Sa se creeze o tabela virtuala Ang_2000 care va contine informatii despre persoanele angajate in 2000.

Create view Ang_2000 as select * from AngajatiWhere extract(year from data_ang)=2000;

2. Sa se strearga angajatul Negrea din aceasta tabela.

Delete from Ang_2000 where coda=1;

-sa se anuleze stergerea- Rollback;

3. Sa se stearga tabela virtual create anterior.

drop view Ang_2000;

Secvente:

4. Sa se creeze o secventa Com_nr care incepe cu valoarea 1000 , pasul de incrementare este 10 , iar valoarea maxima 3300. Secventa se va folosi pentru a asigura unicitatea atributului nrcom din tabela Comenzi.

Create sequence Com_nrIncrement by 10 start with 1000Maxvalue 3300 noncycle

5. Sa se stearga secventa.

Drop sequence Com_nr

Indecsi:

6. Sa se creeze un index pe atributul denc din tabela Clienti.

Create index Cl_den_index on Clienti(denc);

7. Sa se stearga indexul.

Page 19: pasiinviata.files.wordpress.com · Web viewSa se defineasca restrictiile de cheie primara pentru tabela Rand_com (codp si nrcom) alter table Rand_com add constraint PK_pc primary

Drop index Cl_den_index ;

Sinonime:

8. Sa se creeze un sinonim public pentru tabela Produse a utilizatorului Student.

Create public synonym Prod for Student.Produse;

9. Sa se stearga sinonimul.

Drop synonym Prod;