SUBIECTE BAZE DE DATE – ORACLE Se doreşte informatizarea activităţii la biblioteca şcolii.

Pentru rezolvarea problemei se utilizează baza de date BIBLIOTECA. Aceasta conţine următoarele 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 cărţii, cheie primară - titlul cărţii - numele autorului/autorilor cărţii - categoria: informatică, economică, tehnică, beletristică - numele editurii - preţul cărţii Number (4) Varchar2 (50) Varchar2 (50) Varchar2 (10) Varchar2 (8) Date Varchar2 (8) Varchar2 (3) Varchar2 (15) - numărul legitimaţiei, cheie primară - numele şi prenumele cititorului - adresa cititorului - numărul de telefon - seria şi numărul cărţii/buletinului de identitate - data înscrierii - tipul cititorului: elev, profesor - clasa (de forma 12A), numai pentru elevi - disciplina, numai pentru profesori

OPERATII – conţine câte 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) - număr legitimaţie - cota cărţii - data împrumutului - durata împrumutului, maxim 21 de zile - data returnării cărţii de către cititor - numărul zilelor de întârziere - penalizări - 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;

1

Se vizualizează tabela FISA cu comanda: SELECT * FROM FISA. Autor Varchar2 (50). Titlu Varchar2 (50). Se populează tabela CARTE cu date. Pret Number (7)). Se vizualizează structura tabelei CARTE cu comanda: DESCRIBE CARTE. Se creează tabela OPERATII cu comanda: 2 . Se creează tabela CARTE cu comanda: CREATE TABLE CARTE (CotaCarte Number (4)primary key.Se populează tabela FISA cu date. Editura Varchar2 (50). Categorie Varchar2 (15). Se vizualizează tabela CARTE cu comanda: SELECT * FROM CARTE.

'ELEV'. SELECT titlu.'ARAD STR. BUCIUM NR.'BUCURIA'. SELECT numecititor as "Cititori" FROM fisa ORDER BY numecititor. autor 3 . Afişaţi cărţile din bibliotecă.'PROEDITURA'. Subiectul 1. Afişaţi cititorii în ordine alfabetică. '0772341234'.19). Durata Number (2). Se vor introduce înregistrările prin comanda: INSERT INTO fisa VALUES (16.'OSHO'. a.NumeBiblio Varchar2 (20)). '20-APR-08'.11'. 'AR122334'. Se populează tabela Operatii cu date. NrZil Number (3). Penalizari Number (3). Observaţie: Se va repeta comanda cu date diferite de 5 ori sau se pot introduce date de la tastaura urmănd paşii: SQL WORKSHOP → Object Browser →Clic pe numele tabelei FISA →Data →Insert row→Se completează câmpurile cu datele dorite →Create sau Creat and Creat Another b. CotaCarte Number (4). Introduceţi câteva înregistrări (minim 5) în tabelul FISA. ordinate alfabetic după autor. 'POPA AMALIA'. a. DataR Date. Se vizualizează structura tabelei OPERATII cu comanda: DESCRIBE OPERATII.CREATE TABLE OPERATII (NL Number (4). '9B'. Subiectul 2. NULL).'TEHNICA'. Introduceţi câteva înregistrări (minim 5) în tabelul CARTE. INSERT INTO carte VALUES(129. Datal Date. Se vizualizează conţinutul tabela OPERATII cu comanda: SELECT * FROM OPERATII. b.

nl=f. Subiectul 6. b.tip like 'PROFESOR') ORDER BY numecititor. 'IONESCU').titlu. 4 .nl=f. Afişaţi în ordine alfabetică elevii înscrişi la bibliotecă. a. carte c.numecititor FROM fisa f.nl) AND (f..cotacarte) AND (o.nl) AND (datar is null). INSERT INTO operatii VALUES (1. b. Afişaţi cărţile din bibliotecă. SELECT DISTINCT f. Afişaţi în ordine alfabetică elevii înscrişi la bibliotecă. NULL. Subiectul 4. 111. SELECT * FROM operatii ORDER BY DataI. 100. Afişaţi cărţile din bibliotecă împrumutate de fiecare profesor. Aflaţi lista cu cititorii care nu au restituit toate cărţile. Subiectul 3. Introduceţi câteva înregistrări în tabela OPERAŢII. SELECT numecititor FROM fisa WHERE tip LIKE 'ELEV' ORDER BY numecititor. referitoare la împrumutul unor cărţi. operatii o WHERE (c. '01-APR-08'. Subiectul 5. a. a. 21. b. a. grupate pe categorii. editura FROM carte ORDER by editura. categorie FROM carte ORDER BY categorie. SELECT titlu. al cărui număr de legitimaţie se precizează vizualizând conţinutul tabelei. autor.. 58. Afişaţi cărţile nereturnate de un anumit cititor.FROM carte ORDER BY autor. Afişaţi cărţile din bibliotecă în ordine alfabetică a editurilor. Subiectul 7. f. Afişaţi înregistrările din tabelul OPERATII în ordine crescătoare a datei împrumutului.cotacarte=o. SELECT c. SELECT numecititor FROM fisa WHERE tip LIKE 'ELEV' ORDER BY numecititor. b..numecititor FROM fisa f. operatii o WHERE (o. a. . SELECT titlu..

a.tip like 'elev') AND (datar is null). Subiectul 8. operatii o WHERE (o.numecititor FROM fisa f. grupaţi pe clase.nl=f. Afişaţi elevii care au cărţi împrumutate şi nerestituite. SELECT titlu.nl) AND(f. înlocuiţi categoria beletristică cu categoria literatură. Afişaţi o listă cu elevii înscrişi la bibliotecă.titlu.nl=1) AND (datar is null). SELECT numecititor. SELECT DISTINCT f.cotacarte=c. Căutaţi toate cărţile pentru care numele autorului începe cu litera A. UPDATE operatii SET durata=durata+5 WHERE nl=10 AND cotacarte=122. Subiectul 9.cotacarte) AND (o.cotacarte=c. SELECT * FROM fisa WHERE tip like 'elev' ORDER BY clasa. carte c.cotacarte=o. SELECT * FROM carte ORDER BY editura. count(titlu) as "nr carti nerestituite" FROM fisa f.numecititor. operatii o WHERE (o. Căutaţi toţi cititorii pentru care numărul de telefon începe cu 0257. Afişaţi o listă cu cărţile din bibliotecă. b.nl) AND (f. b. telefon 5 . f.cotacarte) AND (o. precizate vizualizând conţinutul tabelei. operatii o WHERE (c.nl=f. Subiectul 10. a.nl) AND (datar is null) GROUP BY numecititor.cotacarte) AND (o. Prelungiţi durata împrumutului cu 5 zile pentru un anumit cititor şi o anumită carte.nl=f. a. SELECT * FROM carte WHERE categorie LIKE 'BELETRISTICA'. În tabelul CARTE. UPDATE carte SET categorie='LITERATURA' WHERE categorie='BELETRISTICA'.SELECT c. b.numecititor FROM fisa f. Afişaţi o listă cu numărul cărţilor nerestituite pentru fiecare cititor. SELECT f. a. grupate pe edituri. b. autor FROM carte WHERE autor like 'A%'. carte c. b. Subiectul 11. carte c. Afişaţi toate înregistrările pentru care categoria cărţii este beletristică.

b. numărul de telefon. SELECT f. Afişaţi o listă care să cuprindă numărul legitimaţiei. b. Afişaţi cele mai scumpe 3 cărţi aflate în proprietatea bibliotecii.cotacarte=o. Căutaţi toate editurile al căror nume începe cu litera A. pret FROM carte ORDER BY pret desc) WHERE rownum<=3. b. f. a.cotacarte. a. Subiectul 13. numele şi prenumele. Subiectul 15.nl. Subiectul 12. SELECT titlu. editura pentru toate cărţile din baza de date BIBLIOTECA. autorul.NL.FROM fisa WHERE telefon LIKE '0257%'. Afişaţi o listă cu cărţile nerestituite pentru fiecare cititor. o. a. cota cărţii împrumutate şi data împrumutului pentru cititorii din baza de date BIBLIOTECA. Afişaţi toate cărţile care au fost împrumutate de bibliotecarul Ionescu. SELECT numecititor. operatii o WHERE (c. Subiectul 14.numecititor . editura FROM carte. Afişaţi o listă cu profesorii înscrişi la bibliotecă.titlu FROM fisa f. SELECT rownum AS nr.datai FROM fisa f. Afişaţi o listă care să conţină cota cărţii. titlu. Afişaţi toate cărţile care nu fac parte din categoria informatica. pret FROM (SELECT titlu. titlu. SELECT DISTINCT editura FROM carte WHERE editura LIKE 'A%'. c.cotacarte) AND (o. Subiectul 16.nl=f. SELECT cotacarte. titlul.cotacarte) AND (o. SELECT c. b. D as "DISCIPLINA" FROM fisa WHERE Tip='PROFESOR' ORDER BY D. 6 . a. operatii o WHERE o.nl=f.numebiblio LIKE 'IONESCU'). categorie FROM carte WHERE categorie NOT LIKE 'INFORMATICA'. carte c. f.telefon. o. autor.nl) AND (datar is null) ORDER BY numecititor. SELECT o.cotacarte=o.titlu FROM carte c.numecititor as "numele si prenumele". grupaţi pe discipline. operatii o WHERE (c.

Subiectul 19. c. carte c.nl=f.cotacarte=o. a. operatii o WHERE c. clasa FROM fisa WHERE tip LIKE 'ELEV' ORDER BY clasa. SELECT numecititor AS "Numele si prenumele". Observaţie. grupaţi pe clase. Lista conţine numele şi prenumele. Trebuie mai întâi introduse în tabela operaţii cărţi împrumutate cu datai=sysdate Subiectul 20. autor. f. SELECT numecititor.titlu FROM fisa f. Realizaţi o interogare care să afişeze elevii din baza de date BIBLIOTECA. b.datai LIKE sysdate ORDER BY nl. adresa. ordonate alfabetic după titlu. SELECT titlu FROM carte c WHERE categorie LIKE 'TEHNICA' ORDER BY titlu. autor. Subiectul 18. Afişaţi o listă cu toate cărţile din baza de date BIBLIOTECA. grupate pe categorii. Afişaţi cărţile care au fost împrumutate la data curentă. grupaţi pe discipline. categorie FROM carte 7 . Realizaţi o interogare care să afişeze cărţile din baza de date BIBLIOTECA. Afişaţi cărţile din categoria tehnică. SELECT titlu. editura FROM carte ORDER BY editura. Realizaţi o interogare care să afişeze profesorii din baza de date BIBLIOTECA. tipul cititorului şi clasa acestuia. Afişaţi o listă cu cititorii din baza de date BIBLIOTECA. Căutaţi cititorii al căror număr de telefon conţine secvenţa 123.nl.numecititor. Afişaţi în ordinea crescătoare a numărului legitimaţiei cererile de împrumut din data curentă.cotacarte AND datai=sysdate. a.a. telefon FROM fisa WHERE telefon LIKE '%123%'. clasa FROM fisa b. SELECT numecititor. SELECT numecititor. b.nl) AND o. Subiectul 17. a. grupate pe edituri.cotacarte) AND (o.titlu FROM carte c. tip. b.cotacarte=o. a. operatii o WHERE (c. SELECT o. adresa. SELECT titlu. SELECT c. D AS "Disciplina" FROM fisa WHERE Tip='PROFESOR' ORDER BY D.

a.numecititor LIKE 'POPA IOANA'). b. vizualizând conţinutul tabelei. 7. autor. UPDATE operatii SET datar=sysdate WHERE nl=10 and cotacarte=123.cotacarte=o.nl) AND o. a. sysdate. vizualizând conţinutul tabelei. operatii o WHERE (c. carte c. Subiectul 23. SELECT nl.null.17). SELECT titlu. aflate în bibliotecă.'Copii'. elevi" 8 . b. elevii care nu se află în clasa precizată. Scrieţi o comandă pentru împrumutarea unei cărţi INSERT INTO OPERATII VALUES(1. b. clasa FROM fisa WHERE clasa NOT LIKE '9B' AND tip LIKE 'ELEV' ORDER BY nl. editura FROM carte WHERE titlu LIKE 'POEZII'. în ordinea crescătoare a numărului legitimaţiei. cărţile care nu provin de la editura al cărui nume este precizat. c.cotacarte) AND (o.numecititor. a. b.'Osho'.datar IS NULL AND (f. 125. editura FROM carte WHERE editura NOT LIKE 'Teora' ORDER BY autor. null.nl=f. INSERT INTO carte VALUES(1139. Subiectul 22.titlu FROM fisa f. Subiectul 21. Realizaţi o interogare care să permită afişarea cărţilor împrumutate şi nereturnate de către un anumit cititor. Subiectul 24. SELECT autor. Pentru a vizualiza modificarile trebuie executata comanda: SELECT * FROM operatii. în ordinea alfabetică a autorului.'PROEDITURA'. Scrieţi o comandă pentru introducerea datelor în tabelul CARTE. 'IONESCU').'TEHNICA'. SELECT f. SELECT DISTINCT editura FROM carte. Afişaţi. Afişaţi. a. Afişaţi câţi cititori din categoria „elev" sunt înscrişi la bibliotecă. Realizaţi o interogare pentru afişarea editurilor de la care există cărţi în bibliotecă. null. înaite şi după executarea comenzii de mai sus. Observaţie. Afişaţi autorul şi editura cărţilor cu titlul "Poezii". numecititor. SELECT COUNT(numecititor) as "Nr. b.ORDER BY categorie. Scrieţi o comandă pentru restituirea unei cărţi.

Afişaţi cărţile al căror autor conţine şirul Mihai. Afişaţi pentru fiecare editură numărul cărţilor existente în bibliotecă. SELECT DISTINCT f.cotacarte=o. SELECT o. a.editura LIKE 'ARVES' and c. b. SELECT count(cotacarte) AS "Nr cartilor imprumutate" FROM operatii WHERE datai bETWEEN '01-Apr-08' aND '20-May-09' Subiectul 28. vizualizând conţinutul tabelei. Afişaţi cititorii care a împrumutat cărţi într-o perioadă precizată de profesorul evaluator. operatii o WHERE o. SELECT sum(pret) AS "valoare totala" FROM carte. b.numebiblio. UPDATE operatii SET nrzile=sysdate-datai WHERE datar is null b. Afişaţi o listă cu numele editurilor existente în tabela BIBLIOTECA. operatii o 9 . b.cotacarte.numecititor as "cititori" FROM fisa f.cotacarte=o. a. Subiectul 25. b. SELECT editura. carte c WHERE o. Realizaţi o interogare care să actualizeze numărul zilelor de întârziere.titlu AS "carti imprumutate".cotacarte=c.cotacarte GROUP BY numebiblio. Calculaţi valoarea totală a cărţilor din bibliotecă. count(titlu) AS "Nr cartilor existente" FROM carte GROUP BY editura. SELECT c. editura FROM operatii o. Subiectul 27. count(c. Afişaţi numărul cărţilor împrumutate de la o editură precizată. SELECT count(c. Afişaţi numărul cărţilor împrumutate de către fiecare bibliotecar de serviciu. SELECT titlu. a.titlu) AS "Nr carti imprumutate" FROM carte c.datai IS NOT NULL AND c. carte c WHERE o. autor FROM carte WHERE autor LIKE '%Mihai% . Subiectul 29.cotacarte. vizualizând conţinutul tabelei.editura LIKE 'ARVES' and c. a.cotacarte) AS "Nr cartilor imprumutate" FROM operatii o.datai IS NOT NULL AND c. Subiectul 26. SELECT DISTINCT editura FROM carte. Afişaţi câte cărţi au fost împrumutate într-o perioadă precizată de profesorul evaluator. a.FROM fisa WHERE Tip='ELEV'. Afişaţi cărţile împrumutate de la o editură precizată.

datai>21 AND o.numecititor. sysdate-o.numecititor. a. Afişaţi lista cititorilor care au împrumutat o anumită carte a cărei cotă este precizată de profesorul evaluator.numecititor.datar IS NOT NULL GROUP BY numecititor. b. Căutaţi cititorii din judeţul Arad (seria cărţii de identitate este AR). f. SELECT c.nl=f.datar IS NOT NULL ORDER BY autor. Afişaţi cărţile aflate (împrumutate) la data curentă la cititori de mai mult de 21 zile (durata maximă admisă pentru împrumut). UPDATE operatii SET penalizari=10 WHERE nrzile<=14 and datar IS NULL. fisa f WHERE o. a.nl=o.operatii o WHERE c. Căutaţi cărţile al căror autor conţine şirul ion.nl=f. SELECT f. dacă NrZile<=14 şi respectiv 20. fisa f WHERE sysdate-o.cotacarte FROM fisa f. SELECT numecititor FROM fisa WHERE AI like 'AR%'. autor FROM carte WHERE autor LIKE '%ION%'. b.nl=o. Calculaţi şi apoi afişaţi penalizările în funcţie de numărul de zile de întârziere.nl.nl) AS "nr carti restituite" FROM operatii o.titlu.datai BETWEEN '01-Apr-08' and '20-may-09' and f. Realizaţi o interogare care afişează cărţile restituite. operatii o.cotacarte=o. a. count(o. de zile intarziere" FROM carte c.nl. Afişaţi numărul cărţilor restituite de către fiecare cititor. Subiectul 30.cotacarte=c. Subiectul 33.cotacarte AND o.cotacarte.titlu as "carti restituite". b. UPDATE operatii SET penalizari=20 WHERE nrzile>14 and datar IS NULL. UPDATE operatii SET nrzile=sysdate-datai WHERE datar IS NULL. SELECT c. dacă NrZile>14. a. astfel: 10. 10 . SELECT f. o. Subiectul 31.WHERE o.nl AND o.datai IS NOT NULL AND o. ordonate alfabetic după numele autorilor. nrzile FROM operatii WHERE datar IS NULL ORDER BY nrzile. SELECT titlu. operatii o WHERE o. SELECT penalizari.nl AND o. Subiectul 32.cotacarte=111 AND f. autor FROM carte c .datai AS "Nr.

a. a.cotacarte AND o. Subiectul 38.datar IS NULL. Realizaţi o interogare care afişează elevii care au cărţi nerestituite.b. b.titlu.nl=o. a. Subiectul 37.cotacarte=o.cotacarte AND datar LIKE sysdate. SELECT DISTINCT f. operatii o WHERE c.titlu as "carti nerestituite" 11 . b. Căutaţi cărţile restituite la data curentă.titlu FROM carte c . Afişaţi în ordine alfabetică profesorii care predau informatică. Realizaţi o interogare care să permită afişarea numărului de legitimaţie şi a numelui şi prenumelui cititorilor bibliotecii.nl. SELECT c. SELECT numecititor FROM fisa WHERE datai>='15-sep-08'.cotacarte=o. select f. b. în ordinea descrescătoare a preţului. SELECT nl AS "Nr legitimatie". Afişaţi cititorii care s-au înscris la biblioteca după o data de 15 septembrie 2008. a. Afişaţi în ordine alfabetică elevii dintr-o anumită clasă la alegere. SELECT c. o. SELECT numecititor.operatii o WHERE c. Realizaţi un raport care să afişeze editurile în ordine alfabetică. Realizaţi o interogare care să afişeze cărţile din bibliotecă. numecititor AS "Nume si prenume" FROM fisa. Subiectul 36. pret FROM carte ORDER BY pret DESC.numecititor. SELECT titlu. SELECT numecititor. Realizaţi o interogare care afişează cărţile nerestituite de profesori.numecititor FROM fisa f. a.datar FROM carte c. Trebuie introduse in tabela operatii carti returnate cu datar=sysdate Subiectul 35. Subiectul 34. D as "Disciplina" FROM fisa WHERE tip LIKE 'PROFESOR' AND D like 'INFORMATICA' ORDER BY numecititor. Afişaţi cărţile care sunt împrumutate (şi nerestituite) la data curentă. SELECT DISTINCT editura FROM carte ORDER BY editura b. c. operatii o WHERE tip LIKE 'ELEV' AND datar IS NULL AND f. clasa FROM fisa WHERE tip like 'ELEV' AND clasa LIKE '10B' ORDER BY numecititor. Observaţie.datai IS NOT NULL AND o.

vizualizând conţinutul tabelei. SELECT c.cotacarte=o. b. f. carte c. Realizaţi o interogare care afişează cărţile care sunt împrumutate.nl=o. operatii o WHERE f. b. SELECT titlu.cotacarte=c. titlu.cotacarte. 12 .FROM fisa f.nl AND numebiblio LIKE 'IONESCU' ORDER BY nl.datar IS NULL AND c.nl=o. categorie FROM carte WHERE categorie LIKE 'INFORMATICA' ORDER BY titlu. în ordinea alfabetică a titlului. b.nl. operatii o WHERE tip LIKE 'PROFESOR' AND datar IS NULL AND f.nl AND o. Afişaţi în ordine crescătoare a cotei cărţile unui anumit autor al cărui nume este precizat. SELECT titlu. a. autor FROM carte WHERE autor LIKE 'MIHAI EMINESCU' ORDER BY cotacarte ASC.titlu AS "Carti imprumutate" FROM carte c. categorie FROM carte ORDER BY categorie.cotacarte. Subiectul 40. titlu. Afişaţi cărţile care fac parte dintr-o anumită categorie precizată. operatii o WHERE o. Afişaţi în ordine crescătoare a numărului legitimaţiei cititorii care au împrumutat cărţi de la bibliotecarul Ionescu. SELECT cotacarte.numecititor FROM fisa f. a. Afişaţi cărţile din bibliotecă în ordinea alfabetică a categoriei din care fac parte. SELECT f. Subiectul 39.

Sign up to vote on this title
UsefulNot useful