Sunteți pe pagina 1din 12

SUBIECTE BAZE DE DATE ORACLE Se dorete informatizarea activitii la biblioteca colii.

. Pentru rezolvarea problemei se utilizeaz baza de date BIBLIOTECA. Aceasta conine urmtoarele tabele: FISA NL NumeCititor Adresa Telefon AI DataI Tip Clasa D CARTE CotaCarte Titlu Autor Categorie Editura Pret Number (4) Varchar2 (50) Varchar2 (50) Varchar2 (15) Varchar2 (50) Number (7) - cota crii, cheie primar - titlul crii - numele autorului/autorilor crii - categoria: informatic, economic, tehnic, beletristic - numele editurii - preul crii Number (4) Varchar2 (50) Varchar2 (50) Varchar2 (10) Varchar2 (8) Date Varchar2 (8) Varchar2 (3) Varchar2 (15) - numrul legitimaiei, cheie primar - numele i prenumele cititorului - adresa cititorului - numrul de telefon - seria i numrul crii/buletinului de identitate - data nscrierii - tipul cititorului: elev, profesor - clasa (de forma 12A), numai pentru elevi - disciplina, numai pentru profesori

OPERATII conine cte o nregistrare pentru fiecare carte mprumutat NL CotaCarte DataI Durata DataR NrZile Penalizari NumeBiblio Number (4) Number (4) Date Number (2) Date Number (3) Number (3) Varchar2 (20) - numr legitimaie - cota crii - data mprumutului - durata mprumutului, maxim 21 de zile - data returnrii crii de ctre cititor - numrul zilelor de ntrziere - penalizri - numele bibliotecarului de serviciu: Ionescu, Popescu

Pentru rezolvarea subiectelor se vor crea cele 3 tabele astfel: Se creeaz tabela FISA cu comanda: CREATE TABLE FISA (NL Number (4) primary key,NumeCititor Varchar2 (50),Adresa Varchar2 (50),Telefon Varchar2 (10), AI Varchar2 (8),DataI Date,Tip Varchar2 (8),Clasa Varchar2 (3), D Varchar2 (15)); Se vizualizeaz structura tabelei FISA cu comanda: DESCRIBE FISA;

Se populeaz tabela FISA cu date. Se vizualizeaz tabela FISA cu comanda: SELECT * FROM FISA;

Se creeaz tabela CARTE cu comanda: CREATE TABLE CARTE (CotaCarte Number (4)primary key, Titlu Varchar2 (50), Autor Varchar2 (50), Categorie Varchar2 (15), Editura Varchar2 (50), Pret Number (7)); Se vizualizeaz structura tabelei CARTE cu comanda: DESCRIBE CARTE;

Se populeaz tabela CARTE cu date. Se vizualizeaz tabela CARTE cu comanda: SELECT * FROM CARTE;

Se creeaz tabela OPERATII cu comanda: 2

CREATE TABLE OPERATII (NL Number (4), CotaCarte Number (4), Datal Date, Durata Number (2), DataR Date, NrZil Number (3), Penalizari Number (3),NumeBiblio Varchar2 (20)); Se vizualizeaz structura tabelei OPERATII cu comanda: DESCRIBE OPERATII;

Se populeaz tabela Operatii cu date. Se vizualizeaz coninutul tabela OPERATII cu comanda: SELECT * FROM OPERATII;

Subiectul 1. a. Introducei cteva nregistrri (minim 5) n tabelul FISA. Se vor introduce nregistrrile prin comanda: INSERT INTO fisa VALUES (16, 'POPA AMALIA','ARAD STR. BUCIUM NR.11', '0772341234', 'AR122334', '20-APR-08', 'ELEV', '9B', NULL); Observaie: Se va repeta comanda cu date diferite de 5 ori sau se pot introduce date de la tastaura urmnd paii: SQL WORKSHOP Object Browser Clic pe numele tabelei FISA Data Insert rowSe completeaz cmpurile cu datele dorite Create sau Creat and Creat Another b. Afiai cititorii n ordine alfabetic. SELECT numecititor as "Cititori" FROM fisa ORDER BY numecititor; Subiectul 2. a. Introducei cteva nregistrri (minim 5) n tabelul CARTE. INSERT INTO carte VALUES(129,'BUCURIA','OSHO','TEHNICA','PROEDITURA',19); b. Afiai crile din bibliotec, ordinate alfabetic dup autor. SELECT titlu, autor 3

FROM carte ORDER BY autor; Subiectul 3. a. Afiai crile din bibliotec mprumutate de fiecare profesor. SELECT c.titlu, f.numecititor FROM fisa f, carte c, operatii o WHERE (c.cotacarte=o.cotacarte) AND (o.nl=f.nl) AND (f.tip like 'PROFESOR') ORDER BY numecititor; b. Afiai crile din bibliotec n ordine alfabetic a editurilor. SELECT titlu, autor, editura FROM carte ORDER by editura;
Subiectul 4. a. Introducei cteva nregistrri n tabela OPERAII, referitoare la mprumutul unor cri. INSERT INTO operatii VALUES (1, 111, '01-APR-08', 21, NULL, 58, 100, 'IONESCU'); .....

b. Afiai nregistrrile din tabelul OPERATII n ordine cresctoare a datei mprumutului. SELECT * FROM operatii ORDER BY DataI; Subiectul 5. a. Afiai crile din bibliotec, grupate pe categorii. SELECT titlu, categorie FROM carte ORDER BY categorie; b. Afiai n ordine alfabetic elevii nscrii la bibliotec. SELECT numecititor FROM fisa WHERE tip LIKE 'ELEV' ORDER BY numecititor; Subiectul 6. a. Aflai lista cu cititorii care nu au restituit toate crile. SELECT DISTINCT f.numecititor FROM fisa f, operatii o WHERE (o.nl=f.nl) AND (datar is null); b. Afiai n ordine alfabetic elevii nscrii la bibliotec. SELECT numecititor FROM fisa WHERE tip LIKE 'ELEV' ORDER BY numecititor; Subiectul 7. a. Afiai crile nereturnate de un anumit cititor, al crui numr de legitimaie se precizeaz vizualiznd coninutul tabelei. 4

SELECT c.titlu, f.numecititor FROM fisa f, carte c, operatii o WHERE (o.cotacarte=c.cotacarte) AND (o.nl=f.nl) AND(f.nl=1) AND (datar is null); b. Afiai toate nregistrrile pentru care categoria crii este beletristic. SELECT * FROM carte WHERE categorie LIKE 'BELETRISTICA'; Subiectul 8. a. Afiai o list cu numrul crilor nerestituite pentru fiecare cititor. SELECT f.numecititor, count(titlu) as "nr carti nerestituite" FROM fisa f, carte c, operatii o WHERE (o.cotacarte=c.cotacarte) AND (o.nl=f.nl) AND (datar is null) GROUP BY numecititor; b. n tabelul CARTE, nlocuii categoria beletristic cu categoria literatur. UPDATE carte SET categorie='LITERATURA' WHERE categorie='BELETRISTICA'; Subiectul 9. a. Afiai o list cu crile din bibliotec, grupate pe edituri. SELECT * FROM carte ORDER BY editura; b. Afiai elevii care au cri mprumutate i nerestituite. SELECT DISTINCT f.numecititor FROM fisa f, carte c, operatii o WHERE (c.cotacarte=o.cotacarte) AND (o.nl=f.nl) AND (f.tip like 'elev') AND (datar is null); Subiectul 10. a. Afiai o list cu elevii nscrii la bibliotec, grupai pe clase. SELECT * FROM fisa WHERE tip like 'elev' ORDER BY clasa; b. Cutai toate crile pentru care numele autorului ncepe cu litera A. SELECT titlu, autor FROM carte WHERE autor like 'A%'; Subiectul 11. a. Prelungii durata mprumutului cu 5 zile pentru un anumit cititor i o anumit carte, precizate vizualiznd coninutul tabelei. UPDATE operatii SET durata=durata+5 WHERE nl=10 AND cotacarte=122; b. Cutai toi cititorii pentru care numrul de telefon ncepe cu 0257. SELECT numecititor, telefon 5

FROM fisa WHERE telefon LIKE '0257%'; Subiectul 12. a. Afiai o list cu profesorii nscrii la bibliotec, grupai pe discipline. SELECT numecititor, D as "DISCIPLINA" FROM fisa WHERE Tip='PROFESOR' ORDER BY D; b. Cutai toate editurile al cror nume ncepe cu litera A. SELECT DISTINCT editura FROM carte WHERE editura LIKE 'A%'; Subiectul 13. a. Afiai o list cu crile nerestituite pentru fiecare cititor. SELECT f.numecititor , c.titlu FROM fisa f, carte c, operatii o WHERE (c.cotacarte=o.cotacarte) AND (o.nl=f.nl) AND (datar is null) ORDER BY numecititor; b. Afiai toate crile care nu fac parte din categoria informatica. SELECT titlu, categorie FROM carte WHERE categorie NOT LIKE 'INFORMATICA'; Subiectul 14. a. Afiai o list care s cuprind numrul legitimaiei, numele i prenumele, numrul de telefon, cota crii mprumutate i data mprumutului pentru cititorii din baza de date BIBLIOTECA. SELECT o.NL, f.numecititor as "numele si prenumele", f.telefon, o.cotacarte, o.datai FROM fisa f, operatii o WHERE o.nl=f.nl; b. Afiai cele mai scumpe 3 cri aflate n proprietatea bibliotecii. SELECT rownum AS nr, titlu, pret FROM (SELECT titlu, pret FROM carte ORDER BY pret desc) WHERE rownum<=3; Subiectul 15. a. Afiai o list care s conin cota crii, autorul, titlul, editura pentru toate crile din baza de date BIBLIOTECA. SELECT cotacarte, autor, titlu, editura FROM carte; b. Afiai toate crile care au fost mprumutate de bibliotecarul Ionescu. SELECT c.titlu FROM carte c, operatii o WHERE (c.cotacarte=o.cotacarte) AND (o.numebiblio LIKE 'IONESCU'); Subiectul 16. 6

a. Afiai o list cu toate crile din baza de date BIBLIOTECA, grupate pe edituri. SELECT titlu, autor, editura FROM carte ORDER BY editura; b. Afiai crile care au fost mprumutate la data curent. SELECT c.titlu FROM carte c, operatii o WHERE c.cotacarte=o.cotacarte AND datai=sysdate; Subiectul 17. a. Afiai o list cu cititorii din baza de date BIBLIOTECA. Lista conine numele i prenumele, adresa, tipul cititorului i clasa acestuia. SELECT numecititor AS "Numele si prenumele", adresa, tip, clasa FROM fisa b. Cutai cititorii al cror numr de telefon conine secvena 123. SELECT numecititor, telefon FROM fisa WHERE telefon LIKE '%123%'; Subiectul 18. a. Realizai o interogare care s afieze elevii din baza de date BIBLIOTECA, grupai pe clase. SELECT numecititor, clasa FROM fisa WHERE tip LIKE 'ELEV' ORDER BY clasa; b. Afiai crile din categoria tehnic, ordonate alfabetic dup titlu. SELECT titlu FROM carte c WHERE categorie LIKE 'TEHNICA' ORDER BY titlu; Subiectul 19. a. Realizai o interogare care s afieze profesorii din baza de date BIBLIOTECA, grupai pe discipline. SELECT numecititor, D AS "Disciplina" FROM fisa WHERE Tip='PROFESOR' ORDER BY D; b. Afiai n ordinea cresctoare a numrului legitimaiei cererile de mprumut din data curent. SELECT o.nl, f.numecititor, c.titlu FROM fisa f, carte c, operatii o WHERE (c.cotacarte=o.cotacarte) AND (o.nl=f.nl) AND o.datai LIKE sysdate ORDER BY nl; Observaie. Trebuie mai nti introduse n tabela operaii cri mprumutate cu datai=sysdate Subiectul 20. a. Realizai o interogare care s afieze crile din baza de date BIBLIOTECA, grupate pe categorii. SELECT titlu, autor, categorie FROM carte 7

ORDER BY categorie; b. Afiai, n ordinea alfabetic a autorului, crile care nu provin de la editura al crui nume este precizat, vizualiznd coninutul tabelei. SELECT titlu, autor, editura FROM carte WHERE editura NOT LIKE 'Teora' ORDER BY autor; Subiectul 21. a. Realizai o interogare care s permit afiarea crilor mprumutate i nereturnate de ctre un anumit cititor. SELECT f.numecititor, c.titlu FROM fisa f, carte c, operatii o WHERE (c.cotacarte=o.cotacarte) AND (o.nl=f.nl) AND o.datar IS NULL AND (f.numecititor LIKE 'POPA IOANA'); b. Afiai, n ordinea cresctoare a numrului legitimaiei, elevii care nu se afl n clasa precizat, vizualiznd coninutul tabelei. SELECT nl, numecititor, clasa FROM fisa WHERE clasa NOT LIKE '9B' AND tip LIKE 'ELEV' ORDER BY nl; Subiectul 22. a. Scriei o comand pentru mprumutarea unei cri INSERT INTO OPERATII VALUES(1, 125, sysdate, 7, null,null, null, 'IONESCU'); b. Scriei o comand pentru restituirea unei cri. UPDATE operatii SET datar=sysdate WHERE nl=10 and cotacarte=123; Observaie. Pentru a vizualiza modificarile trebuie executata comanda: SELECT * FROM operatii; naite i dup executarea comenzii de mai sus. Subiectul 23. a. Scriei o comand pentru introducerea datelor n tabelul CARTE. INSERT INTO carte VALUES(1139,'Copii','Osho','TEHNICA','PROEDITURA',17); b. Afiai autorul i editura crilor cu titlul "Poezii", aflate n bibliotec. SELECT autor, editura FROM carte WHERE titlu LIKE 'POEZII'; Subiectul 24. a. Realizai o interogare pentru afiarea editurilor de la care exist cri n bibliotec. SELECT DISTINCT editura FROM carte; b. Afiai ci cititori din categoria elev" sunt nscrii la bibliotec. SELECT COUNT(numecititor) as "Nr. elevi" 8

FROM fisa WHERE Tip='ELEV'; Subiectul 25. a. Realizai o interogare care s actualizeze numrul zilelor de ntrziere. UPDATE operatii SET nrzile=sysdate-datai WHERE datar is null b. Afiai o list cu numele editurilor existente n tabela BIBLIOTECA. SELECT DISTINCT editura FROM carte; Subiectul 26. a. Afiai numrul crilor mprumutate de ctre fiecare bibliotecar de serviciu. SELECT o.numebiblio, count(c.titlu) AS "Nr carti imprumutate" FROM carte c, operatii o WHERE o.cotacarte=c.cotacarte GROUP BY numebiblio; b. Afiai crile al cror autor conine irul Mihai. SELECT titlu, autor FROM carte WHERE autor LIKE '%Mihai% ; Subiectul 27. a. Afiai pentru fiecare editur numrul crilor existente n bibliotec. SELECT editura, count(titlu) AS "Nr cartilor existente" FROM carte GROUP BY editura; b. Afiai cte cri au fost mprumutate ntr-o perioad precizat de profesorul evaluator. SELECT count(cotacarte) AS "Nr cartilor imprumutate" FROM operatii WHERE datai bETWEEN '01-Apr-08' aND '20-May-09' Subiectul 28. a. Afiai numrul crilor mprumutate de la o editur precizat, vizualiznd coninutul tabelei. SELECT count(c.cotacarte) AS "Nr cartilor imprumutate" FROM operatii o, carte c WHERE o.datai IS NOT NULL AND c.editura LIKE 'ARVES' and c.cotacarte=o.cotacarte; b. Calculai valoarea total a crilor din bibliotec. SELECT sum(pret) AS "valoare totala" FROM carte; Subiectul 29. a. Afiai crile mprumutate de la o editur precizat, vizualiznd coninutul tabelei. SELECT c.titlu AS "carti imprumutate", editura FROM operatii o, carte c WHERE o.datai IS NOT NULL AND c.editura LIKE 'ARVES' and c.cotacarte=o.cotacarte; b. Afiai cititorii care a mprumutat cri ntr-o perioad precizat de profesorul evaluator. SELECT DISTINCT f.numecititor as "cititori" FROM fisa f, operatii o 9

WHERE o.datai BETWEEN '01-Apr-08' and '20-may-09' and f.nl=o.nl; Subiectul 30. a. Calculai i apoi afiai penalizrile n funcie de numrul de zile de ntrziere, astfel: 10, dac NrZile<=14 i respectiv 20, dac NrZile>14. UPDATE operatii SET nrzile=sysdate-datai WHERE datar IS NULL; UPDATE operatii SET penalizari=10 WHERE nrzile<=14 and datar IS NULL; UPDATE operatii SET penalizari=20 WHERE nrzile>14 and datar IS NULL; SELECT penalizari, nrzile FROM operatii WHERE datar IS NULL ORDER BY nrzile; b. Afiai crile aflate (mprumutate) la data curent la cititori de mai mult de 21 zile (durata maxim admis pentru mprumut). SELECT c.titlu, f.numecititor, sysdate-o.datai AS "Nr. de zile intarziere" FROM carte c, operatii o, fisa f WHERE sysdate-o.datai>21 AND o.nl=f.nl AND o.cotacarte=c.cotacarte; Subiectul 31. a. Afiai numrul crilor restituite de ctre fiecare cititor. SELECT f.numecititor, count(o.nl) AS "nr carti restituite" FROM operatii o, fisa f WHERE o.nl=f.nl AND o.datar IS NOT NULL GROUP BY numecititor; b. Cutai cititorii din judeul Arad (seria crii de identitate este AR). SELECT numecititor FROM fisa WHERE AI like 'AR%'; Subiectul 32. a. Afiai lista cititorilor care au mprumutat o anumit carte a crei cot este precizat de profesorul evaluator. SELECT f.numecititor, o.cotacarte FROM fisa f, operatii o WHERE o.datai IS NOT NULL AND o.cotacarte=111 AND f.nl=o.nl; b. Cutai crile al cror autor conine irul ion. SELECT titlu, autor FROM carte WHERE autor LIKE '%ION%'; Subiectul 33. a. Realizai o interogare care afieaz crile restituite, ordonate alfabetic dup numele autorilor. SELECT c.titlu as "carti restituite", autor FROM carte c ,operatii o WHERE c.cotacarte=o.cotacarte AND o.datar IS NOT NULL ORDER BY autor; 10

b. Afiai crile care sunt mprumutate (i nerestituite) la data curent. SELECT c.titlu FROM carte c ,operatii o WHERE c.cotacarte=o.cotacarte AND o.datai IS NOT NULL AND o.datar IS NULL; Subiectul 34. a. Realizai o interogare care s permit afiarea numrului de legitimaie i a numelui i prenumelui cititorilor bibliotecii. SELECT nl AS "Nr legitimatie", numecititor AS "Nume si prenume" FROM fisa; b. Cutai crile restituite la data curent. SELECT c.titlu, o.datar FROM carte c, operatii o WHERE c.cotacarte=o.cotacarte AND datar LIKE sysdate; Observaie. Trebuie introduse in tabela operatii carti returnate cu datar=sysdate Subiectul 35. a. Realizai o interogare care s afieze crile din bibliotec, n ordinea descresctoare a preului. SELECT titlu, pret FROM carte ORDER BY pret DESC; b. Afiai cititorii care s-au nscris la biblioteca dup o data de 15 septembrie 2008. SELECT numecititor FROM fisa WHERE datai>='15-sep-08'; Subiectul 36. a. Realizai un raport care s afieze editurile n ordine alfabetic. SELECT DISTINCT editura FROM carte ORDER BY editura b. Afiai n ordine alfabetic elevii dintr-o anumit clas la alegere. SELECT numecititor, clasa FROM fisa WHERE tip like 'ELEV' AND clasa LIKE '10B' ORDER BY numecititor; Subiectul 37. a. Realizai o interogare care afieaz elevii care au cri nerestituite. SELECT DISTINCT f.numecititor FROM fisa f, operatii o WHERE tip LIKE 'ELEV' AND datar IS NULL AND f.nl=o.nl; b. Afiai n ordine alfabetic profesorii care predau informatic. SELECT numecititor, D as "Disciplina" FROM fisa WHERE tip LIKE 'PROFESOR' AND D like 'INFORMATICA' ORDER BY numecititor; Subiectul 38. a. Realizai o interogare care afieaz crile nerestituite de profesori. select f.numecititor, c.titlu as "carti nerestituite" 11

FROM fisa f, carte c, operatii o WHERE tip LIKE 'PROFESOR' AND datar IS NULL AND f.nl=o.nl AND o.cotacarte=c.cotacarte; b. Afiai n ordine cresctoare a numrului legitimaiei cititorii care au mprumutat cri de la bibliotecarul Ionescu. SELECT f.nl, f.numecititor FROM fisa f, operatii o WHERE f.nl=o.nl AND numebiblio LIKE 'IONESCU' ORDER BY nl; Subiectul 39. a. Realizai o interogare care afieaz crile care sunt mprumutate. SELECT c.titlu AS "Carti imprumutate" FROM carte c, operatii o WHERE o.datar IS NULL AND c.cotacarte=o.cotacarte; b. Afiai crile care fac parte dintr-o anumit categorie precizat, n ordinea alfabetic a titlului. SELECT titlu, categorie FROM carte WHERE categorie LIKE 'INFORMATICA' ORDER BY titlu; Subiectul 40. a. Afiai crile din bibliotec n ordinea alfabetic a categoriei din care fac parte. SELECT titlu, categorie FROM carte ORDER BY categorie, titlu; b. Afiai n ordine cresctoare a cotei crile unui anumit autor al crui nume este precizat, vizualiznd coninutul tabelei. SELECT cotacarte, titlu, autor FROM carte WHERE autor LIKE 'MIHAI EMINESCU' ORDER BY cotacarte ASC;

12

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