0% found this document useful (0 votes)
51 views14 pages

Proiect Baze de Date

The document describes the structure of a bookstore database with tables for sales, sales references, titles, authors, editors, and categories. It includes the table structures and sample data inserts. Key points: - The sales, sales references, titles, authors, editors, and categories tables are described with their fields and relationships. - The tables are dropped and recreated to reset the structure. - Sample data is inserted into the authors and editors tables.

Uploaded by

eulLiric
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
Download as doc, pdf, or txt
0% found this document useful (0 votes)
51 views14 pages

Proiect Baze de Date

The document describes the structure of a bookstore database with tables for sales, sales references, titles, authors, editors, and categories. It includes the table structures and sample data inserts. Key points: - The sales, sales references, titles, authors, editors, and categories tables are described with their fields and relationships. - The tables are dropped and recreated to reset the structure. - Sample data is inserted into the authors and editors tables.

Uploaded by

eulLiric
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1/ 14

PROIECT BAZE DE DATE

Structura bazei de date este urmatoarea:

Clienti:
Codc Numec Telc Nr_cm Coda

Produse:
Codp Numep Cantp Pret

Comenzi:
Nr_com Codc Codf Codp

Furnizori:
Codf Numef Adresaf Telf

Antrenori:
Coda Numea Adresaa Tela CNP Data_ang

drop table clienti_fitt cascade constraints;


drop table produse_fitt cascade constraints;
drop table furnizori_fitt cascade constraints;
drop table antrenori_fitt cascade constraints;
drop table comenzi_fitt cascade constraints;

create table antrenori_fitt(


coda number(2) primary key,
numea varchar2(20),
adresaa varchar2(30),
tela number(10),
cnp number(13),
data_ang date);
create table clienti_fitt(
codc number(4) primary key,
numec varchar2(20),
telc number(10),
nr_cm number(2),
coda number(2),
constraint clienti_antrenori_fk foreign key(coda) references
antrenori_fitt);

create table produse_fitt(


codp number(3) primary key,
numep varchar2(20),
cant varchar2(4),
pret number(6));

create table furnizori_fitt(


codf number (2) primary key,
numef varchar2(20),
adresaf varchar2(20),
telf number(10));

create table comenzi_fitt(


nr_com number(3) primary key,
codc number(4),
codf number(2),
codp number (3),
constraint furnizori_comenzi_fk foreign key(codf) references
furnizori_fitt,
constraint clienti_comenzi_fk foreign key(codc) references
clienti_fitt,
constraint produse_comenzi_fk foreign key(codp) references
produse_fitt);

desc clienti_fitt;
desc produse_fitt;
desc furnizori_fitt;
desc antrenori_fitt;

insert into antrenori_fitt values(11,'Lungu Eva','Str. 11


iunie,nr12',0726585957,2821203295894,to_date('15102003','ddmmyyyy
'));
insert into antrenori_fitt values(22,'Mihai Andrei','Cal.
Victoriei, nr 1-
5',0745212964,1811005189257,to_date('25112003','ddmmyyyy'));
insert into antrenori_fitt values(33,'Vasilescu Ana','Bld. Regina
Maria,nr
120',0766253478,2830707154876,to_date('17102005','ddmmyyyy'));

insert into clienti_fitt values(0001,'Popescu


Ion',0726241568,01,11);
insert into clienti_fitt values(0002,'Ionescu
Andrei',0744586932,03,22);
insert into clienti_fitt values(0003,'Marin
Mihai',0722556268,02,33);

insert into produse_fitt values(111,'Batoane


proteine',1000,7500);
insert into produse_fitt values(222,'produs 1',750,15000);
insert into produse_fitt values(333,'produs 2',50,2000);

insert into furnizori_fitt values(12,'sc miras sa','Str.


Lalelelor,nr.23',0721458596);
insert into furnizori_fitt values(23,'sc evy srl','Bld. Carol,nr
123',0723515749);
insert into furnizori_fitt values(34,'sc star sa','Bld.
Decebal,nr 70',0216354584);

insert into comenzi_fitt values(211,0001,23,222);


insert into comenzi_fitt values(212,0001,34,333);
insert into comenzi_fitt values(213,0003,12,111);
insert into comenzi_fitt values(214,0002,23,222);

1. Modificati tabela Furnizori adaugand coloana ‘Localitate’ de varchar2[15].

alter table furnizori_fitt add(Localitate varchar2(15));

2. Stergeti coloana ‘Adresaf’ din tabela Furnizori.


alter table furnizori_fitt drop column adresaf;

3. Adaugati la tabela Produse coloana ‘UM’ (unitati de masura) de varchar2[3].


alter table produse_fitt add(UM varchar2(3));

4. Dezactivati cheia primara a tabelei Furnizori. Cum explicate eroarea primita?

alter table furnizori disable primary key;

Exista o dependenta legata de cheia primara si aceasta nu se poate dezactiva.

5. Adaugati restrictia cantp not null la tabela Produse.

alter table produse


add constraint not_null_constr
check (cantp is not null);

6. Actualizati tabela Produse stabilind pretul la produsele care incep cu litera “B” de 850.

update produse_fitt set pret=850 where upper(numep) like 'B%';

7. Actualizati tabela Clienti prin scrierea tuturor clientilor cu litere mari.

update clienti_fitt set numec=upper(numec);

8. Sa se stearga antrenorii care s-au angajat in anul 2003.

delete from antrenori_fitt where extract(year from


data_ang)=2003;

9. Antrenorul cu codul 33 sa aiba acelasi telefon ca antrenorul cu codul 22.

update antrenori_fitt set tela=(select tela from antrenori_fitt


where coda=22) where coda=33;

10. . Se realizeaza o aprovizionare cu 500 batoane proteine.

update produse_fitt set cant=cant+500 where numep='Batoane


proteine';

D.

1. Sa se afiseze p ecran numele produselor care au pretul intre 1900 si 5000.

select numep from produse_fitt where pret between 1900 and 5000;

2. Sa se afiseze clientii al caror nume incepe cu “M” si au codc > 0003.


select numec from clienti_fitt where upper(numec) like 'M%' and codc>0003;

3. .Sa se afiseze produsele care au pretul mai mic decat media preturilor.

select numep,pret from produse_fitt where pret<(select avg(pret)


from produse_fitt);

4. Afisati antrenorii de sex feminin al caror nume incepe cu “L”.


select numea from antrenori_fitt where to_char(cnp) like '2%'
and upper(numea) like 'L%';

5. Afisati cel mai nou angajat din firma.

select numea from antrenori_fitt where data_ang=(select


max(data_ang) from antrenori_fitt);

6. Sa se afiseze produsele cumparate de clientul care are codul client cel mai mare.

select numep from produse_fitt p, comenzi_fitt co, clienti_fitt


cl where cl.codc=(select max(codc) from clienti_fitt) and
cl.codc=co.codc and co.codp=p.codp;

7. Sa se afiseze firmele care livreaza produsul Batoane proteine.

select numef from furnizori_fitt f, produse_fitt p, comenzi_fitt


c where p.numep='Batoane proteine' and p.codp=c.codp and
f.codf=c.codf;

8. Sa se afiseze numele clientului si numele antrenorului care se ocupa de el.

select numec, numea from clienti_fitt c, antrenori_fitt a where


c.coda=a.coda;

9. Sa se afiseze cate produe au unitatea de masura in pachete si cate in bucati.

select um, count(*) from produse_fitt group by um;

10. Sa se afiseze valoarea totala cumparata de fiecare client daca aceasta este > de 5000.

select numec,sum(cant*pret) from produse_fitt p,clienti_fitt cl,


comenzi_fitt co where p.codp=co.codp and co.codf=cl.codf group by
numec having sum(cant*pret)>5000;

11. Sa se afiseze cantitatea din produsele care au um=’pac’ ordonate dupa cant precum si
cant totala din aceste produse.

select numep, cant from produse_fitt where um=’pac’


union
select ‘Total’, sum(cant) from produse_fitt where um=’pac’ order
by 2;

12. Sa se afiseze penultimul antrenor angajat.

select * from (select * from antrenori_fitt order by data desc)


where rownum <=2
minus
select * from (select * from antrenori_fitt order by data desc)
where rownum <=1;

E.

1. Sa se creeze un view pe baza selectului de la punctul 10.

create view nume_cant as select numec,sum(cant*pret) from


produse_fitt p,clienti_fitt cl, comenzi_fitt co where
p.codp=co.codp and co.codf=cl.codf group by numec having
sum(cant*pret)>5000;

2. Sa se afiseze numele produsului, cantitatea si “Cantitate suficienta” daca cant>=1000,


“Cantitate insuficienta “ daca cant<1000, “Nu avem informatii despre cantitate” daca cant
este NULL.

select numep, cantp, case when cant>=1000 then ‘Cantitate


Suficienta’
when cant<1000 then ‘Cantitate Insuficienta’
when cant is null then ‘NU avem informatii
depspre cantitate’
end “Informatii stoc” from produse_fitt ;

3. Sa se afiseze cate produse au cant >=1000, cate <1000 si pentru cate nu avem
informatii despre cantitate.

select count (case when cant>=1000 then 1 else null end)


“>=1000”,
count (case when cant<1000 then 1 else null end) “<1000”,
count (case when cant is null then 1 else null end) “Nu
avem informatii”
from produse_fitt;

4. Sa se creeze un synonym pentru tabela Antrenori care sa se numeasca Angajati si apoi


sa se afiseze synonymul.

create synonym angajati for antrenori;


select * from user_synonyms;

5. Sa se creeze un index pe campul tela al tabelei Antrenori.

create index tela_idx on antrenori(tela);


PROIECT BAZE DE DATE
Structura bazei de date a unei librarii este urmatoarea:

VANZARE
vanzare_id | data_vanzarii | discount

VANZARE_REF
vanzare_id | titlu_id

TITLU
titlu_id | titlu_d | autor_id_fk | editor_id_fk |
categorie_id_fk

EDITOR
editor_id | nume_editor | contract_nr

CATEGORIE
categorie_id | descriere

AUTOR
autor_id | nume | prenume | titlu_id_fk

drop table vanzare cascade constraints;


drop table vanzare_ref cascade constraints;
drop table titlu cascade constraints;
drop table editor cascade constraints;
drop table categorie cascade constraints;
drop table autor cascade constraints;

create table vanzare(


vanzare_id number(5) primary key,
data_vanzarii date,
discount number(2) default 0
);
create table vanzare_ref(
vanzare_id number(5) not null,
titlu_id varchar2(100) not null,
PRIMARY KEY(vanzare_id, titlu_id)
);

create table titlu(


titlu_id number(5) primary key,
titlu_d varchar2(50),
autor_id number(4),
editor_id number(4),
categorie_id number(4),
pret number(4),
constraint autor_id_fk foreign key(autor_id) references autor,
constraint editor_id_fk foreign key(editor_id) references editor,
constraint categorie_id_fk foreign key(categorie_id) references categorie
);

create table autor(


autor_id number(4) primary key,
nume varchar2(50),
prenume varchar2(50),
constraint titlu_id_fk foreign key(titlu_id) references titlu
);

create table editor(


editor_id number(4) primary key,
nume varchar2(50),
contract_nr numar(7)
);

create table categorie(


categorie_id number(4) primary key,
descriere varchar2(150)
);

desc vanzare;
desc vanzare_ref;
desc titlu;
desc editor;
desc autor;
desc categorie;

insert into autor values(11, 'Borges','Jorge Luis'));


insert into autor values(15, 'Whitman','Walt'));
insert into autor values(17, 'Cervantes','Miguel'));

insert into editor values(5,'Billy Bob', 5551);


insert into editor values(15,'Flapper Duck', 1250);
insert into editor values(20,'Constance Terry', 251);

insert into categorie values(1,'poezii');


insert into categorie values(2,'roman');

insert into titlu values(12,'Poezii',11,5,1, 45);


insert into titlu values(13,'Poezii',15, 15,1, 35);
insert into titlu values(14,'Don Quijote',17, 20,2, 35);

insert into vanzare values(24, to_date('22-10-2010','dd-mm-


yyyy'), 50);
insert into vanzare values(25, to_date('21-10-2010','dd-mm-
yyyy'));
insert into vanzare values(26, to_date('21-10-2010','dd-mm-
yyyy'), 25);

insert into vanzare_ref (24, 12);


insert into vanzare_ref (25, 13);
insert into vanzare_ref (26, 14);

Modificarea tabelei autor adaugand adaugand ‘descriere’ de varchar2(150).

alter table autor add(descriere varchar2(150));

Stergerea coloanei ‘descriere’ din tabela autor.


alter table autor drop column descriere;

Dezactivarea cheii primare a tabelei titlu.

alter table titlu disable primary key;

Adaugarea restrictiei numee_editor not null la tabela editor.

alter table editor add constraint not_null_constr


check (nume_editor is not null);

Actualizarea tabelei produse stabilind pretul la titlurile avand ca autor pe Borges


de 45.

update titlu set pret=45 where autor_id=11;


Actualizarea tabelei autor prin scrierea tuturor numelor de autor cu majuscule si
a prenumelor cu minuscule.

update autor set nume=upper(nume) and prenume=lower(prenume);

Titlul cu id 12 va avea acelasi editor precum titlul cu id 13.

update titlu set editor_id=(select editor_id from titlu where


titlu_id=13) where titlu_id=12;

Afisarea numele volumelor care au pretul intre 45 si 50.

select titlu_d from titlu where pret between 45 and 50;

Afisarea autorilor al caror prenume incepe cu L.


select prenume from autor where upper(autor) like 'L%';

Media preturilor – de afisat.

select avg(pret)from titlu;

Afisarea celei mai scumpe carti din firma.

select titlu_d from titlu where pret=(select max(pret) from


titlu);

Sa se afiseze volumele editate de editorul cu id-ul cel mai mare.

select titlu_d from titlu, where editor_id=(select max(editor_id)


from editor);

Sa se afiseze editorii pentru care libraria a vandut volume cu Poezii in titlu.

select nume from editor e, titlu t, vanzare_ref r where t.titlu_d


LIKE '%Poezii%' and t.titlu_id=r.titlu_id and
t.editor_id=e.editor_id;

Afisarea denumirilor volumelor si a editorilor corespunzatori.

select titlu_d, nume from titlu t, editor e where


t.editor_id=e.editor_id;

Afisarea ultimei comenzi realizate.

select * from (select * from vanzare order by data desc)


where rownum=1;
sau: select * from vanzare where data_vanzarii=(select max
data_vanzarii) from vanzare);
Crearea unui view pe baza selectarii volumelor care au pretul intre 45 si 50:

create view x as select titlu_d from titlu where pret between 45


and 50;

Crearea unui sinonim pentru tabela titlu care sa se numeasca volum; afisarea
sinonimului.

create synonym volum for titlu;


select * from user_synonyms;

You might also like