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

Structura Bazei de Date pentru Librărie

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)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
119 views14 pages

Structura Bazei de Date pentru Librărie

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)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd

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