Sunteți pe pagina 1din 19

Baze de Date 2010 _ Intrebri orientative

MULTIPLE CHOICE 1. Normalizarea rezolva a. Anomaliile de stergere, de actualizare si de creare b. Anomalia de actualizare, de stergere, si de creare c. Anomalia de inserare, de actualizare si de creare d. Anomaliile de stergere, de actualizare si de inserare 2. O cheie primara a. Poate fi compusa numai dintr-un singur atribut b. Poate fi compusa din mai multe atribute c. Poate fi compusa dintr-un singur atribut care are si valori NULL d. Poate fi compusa din zero, unul sau mai multe atribute 3. Prima forma normala rezolva anomaliile cauzate de a. Grupurile repetitive si atributele multivaloare b. Dependentele partiale de cheia primara c. Dependentele tranzitive d. Relatiile de tip unu-la-mai-multi 4. A doua forma normala rezolva anomaliile cauzate de a. Grupurile repetitive b. Dependentele partiale de cheia primara c. Grupurile repetitive si atributele multivaloare d. Dependentele tranzitive 5. A treia forma normala rezolva anomaliile cauzate de a. Dependentele partiale de cheia primara b. Grupurile repetitive c. Dependentele tranzitive d. Atributele multivaloare 6. Relatia m:n devine in modelul relational a. tabel asociativ cu cheia primara formata numai din doua chei externe pentru cele doua tabele asociate b. tabel asociativ cu cheia primara formata din doua chei externe pentru cele doua tabele asociate plus eventuale coloane aditionale c. chei externe d. entitate independenta 7. Limbajul de definire a datelor (DDL - Data Definition Language) nu include urmatoarea instructiune a. INSERT b. CREATE c. ALTER d. DROP

8. Limbajul de manipulare a datelor (DML Data Manipulation Language) nu include instructiunea a. INSERT b. UPDATE c. DELETE d. DROP 9. Sintaxa corecta pentru o restrictie NOT NULL este a. nume_coloana REFERENCES NOT NULL b. nume_coloana tip_de_date IS NOT NULL c. nume_coloana tip_de_date NOT NULL d. DEFAULT [NULL | NOT NULL] 10. Utilizarile valide ale instructiunii ALTER TABLE nu includ a. Adaugarea coloanelor b. Eliminarea unei chei primare c. Redenumirea unui tabel d. Adaugarea unei restrictii 11. Operatorul UNION a. Include randurile duplicate in setul de rezultate b. Combina seturile de rezultate a doua interogari intr-un singur set de rezultate si elimina randurile duplicate din setul de rezultate c. Combina doua interogari intr-o singura interogare de tip join d. Este numit JOIN in unele implementari SQL 12. Care este varianta corecta pentru a crea tabelul CARTE, cu caracteristicile de mai jos (codc cheie primara, coddom cheie secundara), indicand cheile la nivel de tabel? (Tabelele DOMENIU_CARTE si CARTE sunt in relatia 1:M). a. CREATE TABLE CARTE (codc CHAR(5) PRIMARY KEY, titlu VARCHAR2(30), autor VARCHAR2(30), pret NUMBER(8,2), nrex NUMBER(3), coddom CHAR(5) NOT NULL); b. CREATE TABLE CARTE (codc CHAR(5) PRIMARY KEY, titlu VARCHAR2(30), autor VARCHAR2(30), pret NUMBER(8,2), nrex NUMBER(3), coddom CHAR(5) NOT NULL REFERENCES DOMENIU(coddom)); c. CREATE TABLE CARTE (codc CHAR(5), titlu VARCHAR2(30), autor VARCHAR2(30), pret NUMBER(8,2), nrex NUMBER(3), coddom CHAR(5) NOT NULL, PRIMARY KEY (codc),

FOREIGN KEY (coddom) REFERENCES DOMENIU (coddom)); 13. Sa se creeze tabelul asociativ imprumuta, a carui structura este data mai jos(codc, codcit si dataim fac parte din cheia primara). Sa se precizeze legatura cu tabelele carte si cititor. a. IMPRUMUTA ( codc CHAR(5), codcit CHAR(5), dataim DATE DEFAULT SYSDATE, datares DATE, dataef DATE, PRIMARY KEY (codc, codcit, dataim), FOREIGN KEY (codc) REFERENCES CARTE (codc), FOREIGN KEY (codcit) REFERENCES CITITOR(codcit)); b. IMPRUMUTA ( codc CHAR(5) PRIMARY KEY, codcit CHAR(5) PRIMARY KEY, dataim DATE DEFAULT SYSDATE PRIMARY KEY, datares DATE, dataef DATE, FOREIGN KEY (codc) REFERENCES CARTE (codc), FOREIGN KEY (codcit) REFERENCES CITITOR(codcit)); IMPRUMUTA ( c. codc CHAR(5) REFERENCES CARTE (codc), codcit CHAR(5) REFERENCES CITITOR(codcit), dataim DATE DEFAULT SYSDATE PRIMARY KEY, datares DATE, dataef DATE, PRIMARY KEY (codc, codcit); 14. Sa se creeze tabelul CARTE_INFO(codc, titlu, autor) prin copiere din tabelul CARTE(codc CHAR(5), titlu VARCHAR2(30), autor VARCHAR2(30), pret NUMBER(8,2), nrex NUMBER(3), coddom CHAR(5)) selectand cartile care au coddom=I. a. CREATE TABLE CARTEINFO (codc CHAR(5), titlu VARCHAR2(30), autor VARCHAR2(30), FROM CARTE PRIMARY KEY (codc), FOREIGN KEY (coddom) REFERENCES DOMENIU (coddom)); b. CREATE TABLE CARTE_INFO (codc CHAR(5) PRIMARY KEY, titlu VARCHAR2(30), autor VARCHAR2(30), FROM CARTE WHERE coddom = I; c. CREATE TABLE CARTE_INFO

AS SELECT codc, titlu, autor FROM CARTE WHERE coddom = I; 15. Care este comanda corecta prin care se adauga constrangerea de cheie primara tabelului IMPRUMUTA (cod_cititor, cod_carte, data_imprumut, data_restituire)? a. ALTER TABLE IMPRUMUTA ADD PRIMARY KEY cod_cititor, PRIMARY KEY cod_carte, PRIMARY KEY data_imprumut; b. ALTER TABLE IMPRUMUTA ADD PRIMARY KEY cod_cititor, cod_carte, data_imprumut; c. ALTER TABLE IMPRUMUTA ADD CONSTRAINT cp PRIMARY KEY (cod_cititor, cod_carte, data_imprumut); d. ALTER TABLE IMPRUMUTA ADD CONSTRAINT PRIMARY KEY (cod_cititor, cod_carte, data_imprumut); 16. Sa se insereze in tabelul CARTE toate cartile din tabelul CARTE_INFO, presupunand ca tabelul CARTE_INFO a fost deja creat. a. CREATE TABLE CARTE AS SELECT codc, titlu, autor FROM CARTE_INFO; b. INSERT INTO CARTE SELECT FROM CARTE_INFO; c. CREATE TABLE CARTE AS SELECT * FROM CARTE_INFO; d. INSERT INTO CARTE SELECT * FROM CARTE_INFO; 17. Pentru profesorii titulari, sa se maresca cumulul cu 10% si sa se rotunjeasca la 2 zecimale. a. UPDATE PROF SET CUMUL = (CUMUL*1.1) WHERE TITULAR=Y; b. MODIFY PROF SET CUMUL = ROUND(CUMUL*1.1,2) WHERE TITULAR=Y; c. UPDATE PROF SET CUMUL = ROUND(CUMUL*1.1,2); WHERE TITULAR=Y; d. UPDATE PROF SET CUMUL = ROUND(CUMUL*1.1,2); 18. Sa se modifice pretul cartilor din biblioteca, care se gasesc intr-un numar de exemplare mai mic decat media numarului de exemplare pe biblioteca. Noua valoare a pretului sa fie egala cu suma preturilor cartilor scrise de BARBU. a. UPDATE CARTE SET pret = (SELECT SUM(pret) FROM CARTE WHERE autor = BARBU) WHERE nrex < (SELECT AVG(nrex) FROM CARTE); b. MODIFY CARTE SET pret = (SELECT SUM(pret)

FROM carte WHERE autor = BARBU) WHERE nrex < (SELECT AVG(nrex) FROM CARTE); c. UPDATE CARTE pret = ( SUM(pret) FROM carte WHERE autor = BARBU) WHERE nrex < ( AVG(nrex) FROM CARTE); d. UPDATE CARTE pret = (SELECT SUM(pret) FROM carte WHERE autor = BARBU and nrex < ( AVG(nrex) FROM CARTE); 19. O uniune (join) fara o clauza WHERE sau o clauza JOIN a. Nu returneaza nici un rand din setul de rezultate b. Reprezinta o uniune interna (inner join) c. Are ca rezultat un produs cartezian d. Reprezinta o uniune externa (outer join) 20. O uniune externa (outer join) nu a. Poate fi scrisa in Oracle SQL folosind un simbol (+) in clauza FROM b. Poate fi scrisa in Oracle SQL folosind un simbol (+) in clauza WHERE c. Returneaza toate randurile din unul sau din ambele tabele d. Poate fi catre stanga, catre dreapta sau completa 21. Sa se obtina pentru fiecare carte, codul sau si numarul de exemplare care nu au fost inca restituite. a. SELECT codc FROM IMPRUMUTA WHERE dataef IS NULL GROUP BY codc; b. SELECT COUNT(*) FROM IMPRUMUTA GROUP BY codc; c. SELECT codc, COUNT(*) FROM IMPRUMUTA WHERE dataef IS NULL GROUP BY codc; d. SELECT COUNT(*) FROM IMPRUMUTA WHERE dataef =0 GROUP BY codc; 22. Care este secventa corecta care afiseaza cate carti au fost imprumutate cel putin de doua ori? a. SELECT COUNT(COUNT(codcarte)) FROM imprumuta GROUP BY codcarte HAVING COUNT(codcarte)>1; b. SELECT COUNT(codcarte) FROM imprumuta

GROUP BY codcarte HAVING COUNT(codcarte)>1; c. SELECT COUNT(COUNT(codcarte)) FROM imprumuta WHERE COUNT(codcarte)>1; d. SELECT COUNT(codcarte) FROM imprumuta ORDER BY codcarte HAVING COUNT(codcarte)>1; 23. Care este secventa corecta care afiseaza pentru fiecare domeniu de carte, numarul cartilor din domeniu, media preturilor si numarul total de exemplare? a. SELECT codcarte, COUNT(*), AVG(pret) FROM CARTE GROUP BY codcarte; b. SELECT coddomeniu, AVG(pret), SUM(nrex) FROM CARTE GROUP BY codcarte; c. SELECT coddomeniu, COUNT(*), AVG(pret), SUM(nrex) FROM CARTE GROUP BY coddomeniu; d. SELECT COUNT(*), AVG(pret), SUM(nrex) FROM CARTE ORDER BY codcarte; 24. Care este comanda corecta care pentru fiecare facultate, insereaza in tabelul TOTALURI(cod_fac, nr_prof, total_sal_fac) numarul de profesori si suma salariilor pe care facultatea o plateste profesorilor sai? a. INSERT TO TOTALURI SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF ORDER BY COD_FAC; b. INSERT INTO TOTALURI SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF ; c. INSERT INTO TOTALURI SELECT COD_FAC, COUNT(*) , SUM(SALARIU) FROM PROF GROUP BY COD_FAC; d. INSERT INTO TOTALURI SELECT COD_FAC, SUM(COD_PROF), SUM(SALARIU) FROM PROF GROUP BY COD_FAC; 25. Sa se obtina titlurile si preturile cartilor mai scumpe decat cartea avand titlul Baze de date, al carui autor este Popescu (self join). a. SELECT x.titlu, x.pret FROM carte x, y WHERE x.pret < y.pret AND y.titlu = Baze de date AND y.autor = Popescu; b. SELECT x.titlu, x.pret

c.

d.

FROM WHERE AND AND SELECT FROM WHERE AND AND SELECT FROM WHERE AND

carte x, carte y x.pret > y.pret y.titlu = Baze de date y.autor = Popescu; x.titlu, x.pret carte x, carte y x.pret > y.pret titlu = Baze de date autor = Popescu; x.titlu, x.pret carte x, carte y x.pret > y.pret y.titlu = Baze de date, y.autor = Popescu;

26. Pentru tabelele PROFESORI(codp, nume, pren, salariu) COPII (codc, codp, nume_c, virsta) care este secventa corecta pentru a afisa profesorii care au copii? a. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp IN (SELECT DISTINCT codp FROM COPII); b. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp IN DISTINCT codp FROM COPII; c. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp IN COPII; 27. Pentru tabelele PROFESORI(codp, nume, pren, salariu) COPII (codc, codp, nume_c, virsta) care este secventa corecta pentru a afisa profesorii fara copii? a. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp IS NOT (SELECT DISTINCT codp FROM COPII); b. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp NOT IN (SELECT DISTINCT codp FROM COPII); c. SELECT a.nume, a.pren FROM PROFESORI A WHERE a.codp NOT IN SELECT codp FROM copii; 28. Se considera pentru actionarii unei firme, urmatoarele tabele ACTIONARI(nume varchar2(20), cod_act number(5)) ACTIUNI (cod_act number(5), seriain number(8), seriasf number(8), valoare number(8)) (unde seriain si seriasf reprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni pe care il are un actionar). Care este secventa corecta care afiseaza pentru un actionar (introdus de la tastatura), intervalele seriilor actiunilor sale? a. SELECT a.seriain, a.seriasf, b.nume

FROM actiuni a, actionari b WHERE a.cod_act=b.cod_act AND b.nume=&x; b. SELECT a.seriain, a.seriasf, b.nume FROM actiuni , actionari WHERE a.cod_act=b.cod_act AND nume=&x; c. SELECT a.seriain, a.seriasf, b.nume FROM actiuni a, actionari b WHERE a.cod_act=b.cod_act ; d. SELECT a.seriain, a.seriasf, b.nume FROM actiuni a, actionari b WHERE a.cod_act=b.cod_act OR b.nume=&x; 29. Se considera pentru actionarii unei firme, tabelul ACTIUNI (cod_act number(5), seriain number(8), seriasf number(8), valoare number(8)) (unde seriain si seriasf reprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni pe care il are un actionar). Care este secventa corecta care afiseaza suma necesara firmei pentru plata tuturor devidentelor (numarul de actiuni inmultit cu valoarea unei actiuni)? a. SELECT SUM((seriain+seriasf)*valoare)) FROM ACTIUNI; b. SELECT SUM((seriasf-seriasf)*valoare)) FROM ACTIUNI; c. SELECT SUM((seriain-seriasf)*valoare)) FROM ACTIUNI; d. SELECT SUM((seriasf-seriain+1)*valoare)) FROM ACTIUNI; 30. Pentru tabelele Angajat(cod_angajat, nume, pren, ..) Are_functia (cod_angajat, cod_functie, salariu ,..) Functii(cod_functie, ) care este comanda corecta pentru a calcula suma salariilor angajatului ENE ANA, care cumuleaza mai multe functii, in diferite compartimente? a. SELECT COUNT(SALARIU) AS SALARIU_CUMULAT FROM salariat, are_functia WHERE s.cod_salariat=a.cod_salariat AND NUME='ENE' AND PREN='ANA; b. SELECT Sum(SALARIU) AS SALARIU_CUMULAT FROM salariat, are_functia WHERE NUME='ENE' , PREN='ANA; c. SELECT Sum(SALARIU) AS SALARIU_CUMULAT FROM salariat s, are_functia a WHERE s.cod_salariat=a.cod_salariat AND NUME='ENE' AND PREN='ANA; 31. Care este comanda corecta care afiseaza daca exista angajati care nu lucreaza in departamentul Contractari si al caror salariu coincide cu salariul unui angajat din departamentul Contractari? a. SELECT nume, salariu, cod_depart FROM salariati WHERE salariu IN (SELECT salariu FROM salariati , department d WHERE s.cod_depart = d.cod_depart AND nume_depart <> Contractari) AND cod_depart= (SELECT cod_depart FROM department

WHERE nume_depart = Contractari); b. SELECT nume, salariu, cod_depart FROM salariati WHERE salariu IS IN (SELECT salariu FROM salariati , department WHERE s.cod_depart = d.cod_depart , nume_depart = Contractari) AND cod_depart<> (SELECT cod_depart FROM department WHERE nume_depart = Contractari); c. SELECT nume, salariu, cod_depart FROM salariati WHERE (salariu) IN (SELECT salariu FROM salariati s, department d WHERE s.cod_depart = d.cod_depart AND nume_depart = Contractari) AND cod_depart<> (SELECT cod_depart FROM department WHERE nume_depart = Contractari); 32. Care este comanda corecta care afiseaza numarul total de carti imprumutate si restituite pentru fiecare cititor al unei biblioteci? a. SELECT cod_cititor, COUNT() FROM imprumuta WHERE data_restituirii NOT NULL GROUP BY cod_cititor; b. SELECT cod_cititor, COUNT(*) FROM imprumuta WHERE data_restituirii IS NOT NULL; c. SELECT cod_cititor, COUNT(*) FROM imprumuta GROUP BY cod_cititor; d. SELECT cod_cititor, COUNT(*) FROM imprumuta WHERE data_restituirii IS NOT NULL GROUP BY cod_cititor; 33. Care este comanda corecta care afiseaza numele salariatilor care castiga mai mult decat salariul mediu pe companie, in ordine crescatoare a salariului? a. SELECT nume FROM salariati WHERE salariu >AVG(salariu); b. SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati) ORDER BY salariu; c. SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati ORDER BY salariu); d. SELECT nume FROM salariati WHERE salariu > (SELECT AVG(salariu) FROM salariati) ORDER BY 1;

34. Care comanda listeaza numele tuturor angajatilor care au a treia litera din nume 'a'? a. SELECT nume

FROM WHERE b. SELECT FROM WHERE c. SELECT FROM WHERE

salariat nume LIKE '__a$'; nume salariat nume LIKE '%a%'; nume salariat nume LIKE '__a%';

35. Care dintre urmatoarele comenzi intoarce numarul zilei din luna carespunzator datei curente? a. SELECT TO_CHAR(SYSDATE,DDD) FROM dual; b. SELECT TO_CHAR(SYSDATE,DAY) FROM dual; c. SELECT TO_CHAR(SYSDATE,D) FROM dual; d. SELECT TO_CHAR(SYSDATE,DD) FROM dual; 36. Care este comanda care nu elimina simultan spatiile de la inceputul si sfarsitul coloanei nume? a. SELECT TRIM(nume) FROM salariat; b. SELECT RTRIM(LTRIM(nume)) FROM salariat; c. SELECT LTRIM(RTRIM(nume)) FROM salariat; d. SELECT LTRIM(nume) FROM salariat; 37. Care comanda care afiseaza numarul de angajati din fiecare departament? a. SELECT cod_departament, COUNT(*) FROM salariat; b. SELECT cod_departament, SUM(cod_angajat) FROM salariat GROUP BY cod_departament; c. SELECT cod_departament, COUNT(*) FROM salariat GROUP BY cod_departament; d. SELECT cod_departament, COUNT() FROM salariat GROUP BY cod_departament; 38. Care este comanda corecta care afiseaza codul departamentelor pentru care salariul minim depaseste 5000? a. SELECT cod_departament FROM salariat WHERE MIN(salariu)>5000 GROUP BY cod_departament; b. SELECT cod_departament FROM salariat GROUP BY cod_departament

HAVING MIN(salariu)>5000; c. SELECT cod_departament FROM salariat GROUP BY cod_departament MIN(salariu)>5000; 39. Care este comanda corecta care afiseza: - codurile departamentelor in care lucreaza cel putin un angajat, iar pentru fiecare dintre acestea si pentru fiecare manager care lucreaza in departamentul respectiv numarul de salariati; - numarul de salariati pentru fiecare departament indiferent de manager; - numarul de angajati subordonati unui manager indiferent de department; - numarul total de angajati din companie? a. SELECT cod_depart, cod_manager, COUNT(cod_angajat) FROM salariati GROUP BY CUBE (cod_depart, cod_manager); b. SELECT cod_depart, cod_manager, COUNT(cod_angajat) FROM salariati GROUP BY cod_depart, cod_manager; c. SELECT cod_depart, cod_manager, COUNT(cod_angajat) FROM salariati GROUP BY ROLLUP (cod_depart, cod_manager); 40. Care este comanda corecta care afiseaza: - codurile departamentelor in care lucreaza cel putin un angajat, iar pentru fiecare dintre acestea si pentru fiecare manager care lucreaza in departamentul respectiv numarul de salariati; - numarul de salariati pentru fiecare departament indiferent de manager; - numarul total de angajati din companie? a. SELECT cod_depart, cod_manager, COUNT(*) FROM salariati GROUP BY CUBE (cod_depart, cod_manager); b. SELECT cod_depart, cod_manager, COUNT(*) FROM salariati GROUP BY cod_depart, cod_manager; c. SELECT cod_depart, cod_manager, COUNT(*) FROM salariati GROUP BY ROLLUP (cod_depart, cod_manager); 41. Care este comanda corecta care afiseaza numarul total al cartilor imprumutate in anul 2009? a. SELECT COUNT() FROM imprumuta WHERE TO_CHAR(data_imprumutului,yyyy)=2009; b. SELECT COUNT(*) FROM imprumuta WHERE TO_CHAR(data_imprumutului,yyyy)=2009; c. SELECT COUNT(*) FROM imprumuta WHERE data_imprumutului=2009; d. SELECT COUNT(*) FROM imprumuta WHERE TO_CHAR(data_imprumutului,yy)=2009;

42. Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de Ionescu Mihai? a. SELECT nume, salariu FROM salariati WHERE cod_sef != (SELECT cod_angajat FROM salariati WHERE nume ='Ionescu' AND prenume ='Mihai' ); b. SELECT nume, salariu FROM salariati WHERE cod_sef = (SELECT cod_angajat FROM salariati WHERE nume ='Ionescu', prenume ='Mihai' ); c. SELECT nume, salariu FROM salariati WHERE cod_sef = Ionescu Mihai'; d. SELECT nume, salariu FROM salariati WHERE cod_sef = (SELECT cod_angajat FROM salariati WHERE nume ='Ionescu' AND prenume ='Mihai' ); 43. Care este comanda corecta care afiseaza numele salariatilor si numele departamentelor in care lucreaza, inclusiv departamentele in care nu lucreaza salariati? a. SELECT nume_salariat, nume_departament FROM salariati s, departamente d WHERE s.cod_departament = d.cod_departament; b. SELECT nume_salariat, nume_departament FROM salariati s, departamente d WHERE s.cod_departament(+) = d.cod_departament; c. SELECT nume_salariat, nume_departament FROM salariati s, departamente d WHERE s.cod_departament = d.cod_departament(+); d. SELECT nume_salariat, nume_departament FROM salariati s, departamente d WHERE s.cod_departament(+) = d.cod_departament(+); 44. Care este comanda corecta care listeaza numele functiilor salariatilor care lucreaza in departamentul 30, fara duplicate? a. SELECT DISTINCT nume_functie FROM salariati s, functii f WHERE cod_functie=cod_functie AND cod_departament= 30; b. SELECT DISTINCT nume_functie FROM salariati s, functii f WHERE s.cod_functie=f.cod_functie AND cod_departament= 30; c. SELECT DISTINCT nume_functie FROM salariati, functii WHERE s.cod_functie=f.cod_functie AND cod_departament= 30; d. SELECT nume_functie FROM salariati s, functii f WHERE s.cod_functie=f.cod_functie AND cod_departament= 30;

45. Care este comanda corecta care afiseaza toate functiile pe care nu lucreaza angajati? a. SELECT cod_functie FROM functii WHERE cod_functie IN (SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL); b. SELECT cod_functie FROM functii WHERE cod_functie NOT IN (SELECT cod_functie FROM salariati WHERE cod_functie IS NULL); c. SELECT cod_functie FROM functii WHERE cod_functie NOT IN (SELECT cod_functie FROM salariati); d. SELECT cod_functie FROM functii WHERE cod_functie NOT IN (SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL); 46. Care este comanda corecta care listeaza fara duplicate, codul operelor de arta (numeric), codul (numeric) si numele artistilor (sir de caractere)? a. SELECT cod_opera, cod_artist, null nume FROM opera UNION ALL SELECT null, cod_artist, nume FROM artist; b. SELECT cod_opera, cod_artist, TO_CHAR(null) nume FROM opera UNION SELECT TO_NUMBER(null), cod_artist, nume FROM artist; c. SELECT cod_opera, cod_artist, nume FROM opera UNION SELECT cod_artist, nume FROM artist; 47. Care este comanda corecta care obtine codurile cartilor care se gasesc in biblioteca in mai putin de 20 exemplare si care au fost mprumutate de cel putin trei ori? a. SELECT codcarte FROM carte WHERE nrex < 20 MINUS SELECT codcarte FROM imprumuta GROUP BY codcarte HAVING COUNT(*) > 3; b. SELECT codcarte FROM carte WHERE nrex < 20 INTERSECT SELECT codcarte FROM imprumuta GROUP BY codcarte HAVING COUNT(*) > 3; c. SELECT codcarte FROM carte

WHERE nrex < 20 UNION SELECT codcarte FROM imprumuta GROUP BY codcarte HAVING COUNT(*) > 3; 48. Care este comanda corecta care afiseaza informatii referitoare la operele de arta, artistii care le-au creat si galeriile n care sunt expuse? a. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume, g.cod_galerie, nume_galerie, adresa FROM opera o, galerie g, artist a WHERE o.cod_artist = a.cod_artist; b. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume, g.cod_galerie, nume_galerie, adresa FROM opera, galerie, artist WHERE opera.cod_artist = artist.cod_artist AND o.cod_galerie = g.cod_galerie; c. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume, g.cod_galerie, nume_galerie, adresa FROM opera o, galerie g, artist a WHERE o.cod_artist = a.cod_artist AND o.cod_galerie = g.cod_galerie; 49. Care este comanda corecta care afiseaza informatii referitoare la titlul operelor de arta expuse n galeriile avnd codul 20 sau 40, respectiv numele si prenumele artistilor care le-au realizat? a. SELECT titlu, nume, prenume FROM opera JOIN artist WHERE cod_galerie IN (20, 40); b. SELECT titlu, nume, prenume FROM opera NATURAL JOIN artist WHERE cod_galerie IN (20, 40); c. SELECT titlu, nume, prenume FROM opera NATURAL JOIN artist USING cod_artist WHERE cod_galerie IN (20, 40); d. SELECT titlu, nume, prenume FROM opera JOIN artist ON (cod_artist) WHERE cod_galerie IN (20, 40); 50. Care este comanda corecta care afiseaza informatii referitoare la artisti si operele acestora, inclusiv cei care nu au opere expuse n cadrul muzeului? a. SELECT nume, prenume, titlu FROM opera o RIGHT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist); b. SELECT nume, prenume, titlu FROM opera o LEFT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist); c. SELECT nume, prenume, titlu FROM opera o, artist WHERE o.cod_artist = a.cod_artist(+); d. SELECT nume, prenume, titlu FROM opera o FULL OUTER JOIN artist a ON o.cod_artist = a.cod_artist;

51. Care este comanda corecta care afiseaza numele si prenumele artistilor, precum si titlurile operelor create de acestia? Se vor afisa si artistii care nu au opere expuse n cadrul muzeului, precum si titlurile operelor al caror autor este necunoscut. a. SELECT nume, prenume, titlu FROM opera o RIGHT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist); b. SELECT nume, prenume, titlu FROM opera o, artist a WHERE o.cod_artist(+) = a.cod_artist(+); c. SELECT nume, prenume, titlu FROM opera o FULL OUTER JOIN artist a ON (o.cod_artist = a.cod_artist); d. SELECT nume, prenume, titlu FROM opera o LEFT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist); 52. Care este comanda corecta care afiseaza titlul, codul artistului si valoarea operelor create de artistul caruia i apartine opera avnd codul 200 si care se afla expuse n aceeasi galerie cu operele al caror cod este 100 sau 110? Se presupune ca o opera are un singur autor. a. SELECT titlu, cod_artist, valoare FROM opera WHERE cod_artist != (SELECT MAX(cod_artist) FROM opera WHERE cod_opera = 200) AND cod_galerie IN (SELECT cod_galerie FROM opera WHERE cod_opera IN (100, 110)); b. SELECT titlu, cod_artist, valoare FROM opera WHERE cod_artist = (SELECT cod_artist FROM opera WHERE cod_opera = 200) AND cod_galerie IN (SELECT cod_galerie FROM opera WHERE cod_opera IN (100, 110)); c. SELECT titlu, cod_artist, valoare FROM opera WHERE cod_artist = (SELECT cod_artist FROM opera WHERE cod_opera = 200) AND cod_galerie NOT IN (SELECT cod_galerie FROM opera WHERE cod_opera IN (100, 110)); 53. Care este comanda corecta care afiseaza pentru fiecare artist titlul si valoarea celei mai ieftine opere de arta expuse n muzeu? a. SELECT titlu, cod_artist, valoare FROM opera WHERE valoare IN (SELECT MIN(valoare) FROM opera GROUP BY cod_artist); b. SELECT titlu, cod_artist, valoare FROM opera WHERE valoare = (SELECT MIN(valoare) FROM opera); c. SELECT titlu, cod_artist, valoare FROM opera

WHERE valoare = (SELECT MIN(valoare) FROM opera ORDER BY cod_artist); 54. Care este comanda corecta care afiseaza codul, numele si prenumele artistilor care au cel putin trei opere de arta expuse n muzeu? a. SELECT cod_artist, nume, prenume FROM artist a WHERE 3 <= (SELECT COUNT(*) FROM opera); b. SELECT cod_artist, nume, prenume FROM artist a WHERE 3 <= (SELECT COUNT(*) FROM opera WHERE cod_artist = a.cod_artist); c. SELECT cod_artist, nume, prenume FROM artist a WHERE 3 <= (SELECT SUM(cod_opera) FROM opera WHERE cod_artist = a.cod_artist); 55. Care este comanda care sterge toti angajatii din departamentul 80 care nu au comision? a. DELETE FROM angajati WHERE comision IS NULL OR cod_departament = 80; b. DELETE FROM angajati WHERE comision IS NULL AND cod_departament = 80; c. DELETE FROM angajati WHERE comision = NULL AND cod_departament = 80; 56. Care este comanda corecta care afiseaza: - valoarea totala a operelor de arta ale unui autor, expuse n cadrul fiecarei galerii; - valoarea totala a operelor din fiecare galerie, indiferent de autor; - valoarea totala a operelor fiecarui autor, indiferent de galerie; - valoarea totala a operelor. a. SELECT cod_galerie, cod_artist, SUM(valoare) FROM opera GROUP BY cod_galerie, cod_artist; b. SELECT cod_galerie, cod_artist, SUM(valoare) FROM opera GROUP BY ROLLUP(cod_galerie, cod_artist); c. SELECT cod_galerie, cod_artist, SUM(valoare) FROM opera GROUP BY CUBE(cod_galerie, cod_artist); 57. Care este comanda corecta care afiseaza: - valoarea totala a operelor de arta ale unui autor, expuse n cadrul fiecarei galerii; - valoarea totala a operelor din fiecare galerie, indiferent de autor; - valoarea totala a operelor.

a. SELECT cod_galerie, cod_artist, SUM(valoare) FROM opera GROUP BY cod_galerie, cod_artist; b. SELECT cod_galerie, cod_artist, SUM(valoare) FROM opera GROUP BY ROLLUP(cod_galerie, cod_artist); c. SELECT cod_galerie, cod_artist, SUM(valoare) FROM opera GROUP BY CUBE(cod_galerie, cod_artist); 58. Considernd galeriile al caror cod este mai mic dect 50, care este comanda corecta care calculeaza media valorilor operelor: - pentru fiecare galerie si, n cadrul acesteia, pentru fiecare artist; - pentru fiecare artist si, n cadrul acestuia, pentru anii de achizitie corespunzatori. a. SELECT cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy') "an achizitie", AVG(valoare) "Valoare medie" FROM opera WHERE cod_galerie < 50 GROUP BY CUBE (cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy')); b. SELECT cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy') "an achizitie", AVG(valoare) "Valoare medie" FROM opera WHERE cod_galerie < 50 GROUP BY GROUPING SETS ((cod_galerie, cod_artist), (cod_artist, TO_CHAR(data_achizitiei, 'yyyy'))); c. SELECT cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy') "an achizitie", AVG(valoare) "Valoare medie" FROM opera WHERE cod_galerie < 50 GROUP BY ROLLUP (cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy')); 59. Se da urmatoarea vizualizare CREATE VIEW v_angajati AS SELECT cod_ang, nume, prenume, salariu, data_angajarii FROM angajati WITH READ ONLY; Care dintre urmatoarele comenzi este corecta? a. INSERT INTO v_angajati VALUES (10, Ion, Daniel, 1000,05/12/2009); b. DELETE FROM v_angajati WHERE salariu > 1000; c. SELECT * FROM v_angajati; d. UPDATE v_angajati SET salariu = salariu + 500 WHERE cod_angajat = 10; 60. Se da urmatoarea vizualizare CREATE VIEW v_angajati AS SELECT cod_ang, nume, prenume, salariu, cod_departament

FROM angajati WHERE cod_departament = 30 WITH CHECK OPTION; Care dintre urmatoarele comenzi este corecta? a. INSERT INTO v_angajati VALUES (10, Ion, Daniel, 1000, 505); b. SELECT * FROM v_angajati WHERE salariu > 505; c. UPDATE v_angajati SET cod_departament= 505 WHERE cod_departament = 30; 61. Care este comanda corecta care obtine numele primilor trei angajati care au cele mai mari salarii? a. SELECT nume FROM angajati a WHERE 3>(SELECT COUNT(*) FROM angajati WHERE salariu > a.salariu); b. SELECT nume FROM angajati a WHERE COUNT(*) >(SELECT 3 FROM angajati WHERE salariu > a.salariu); c. SELECT nume FROM angajati WHERE 3>(SELECT COUNT(*) FROM angajati); 62. Care este comanda corecta care obtine numele angajatilor care castiga salariul maxim in departamentul in care lucreaza? a. SELECT nume FROM salariati s WHERE salariu =(SELECT MIN(salariu) FROM angajati ); b. SELECT nume FROM salariati WHERE salariu =(SELECT salariu FROM salariati WHERE salariu = MIN(salariu)); c. SELECT nume FROM salariati s WHERE salariu =(SELECT MIN(salariu) FROM angajati WHERE cod_departament=s.cod_departament); 63. Care este comanda corecta care obtine titlurile cartilor care momentan sunt imprumutate (inca nu au fost restituite)? Dataef reprezinta data la care cititor a restituit efectiv cartea. a. SELECT titlu FROM carte WHERE cod_carte IN (SELECT DISTINCT cod_carte

FROM imprumuta WHERE dataef IS NULL); b. SELECT titlu FROM carte WHERE cod_carte NOT IN (SELECT DISTINCT cod_carte FROM imprumuta WHERE dataef IS NULL); c. SELECT titlu FROM carte WHERE cod_carte IN (SELECT DISTINCT cod_carte FROM imprumuta WHERE dataef IS NOT NULL); 64. Care este comanda anul 2008? a. SELECT FROM WHERE AND b. SELECT FROM WHERE AND AND c. SELECT FROM WHERE AND AND corecta care obtine numele cititorilor si titlurile cartilor imprumutate de acestia in nume, titlu cititor, carte, imprumuta imprumuta.cod_carte= carte.cod_carte TO_CHAR(data_imprumut,yyyy) = 2008; nume, titlu cititor, carte, imprumuta imprumuta.cod_carte= carte.cod_carte imprumuta.cod_cititor= cititor.cod_cititor TO_CHAR(data_imprumut,yyyy) = 2008; nume, titlu cititor, carte, imprumuta imprumuta.cod_carte= carte.cod_carte imprumuta.cod_cititor= cititor.cod_cititor TO_CHAR(data_imprumut,2008) = 2008;

65. Care este comanda corecta care afiseaza jobul pentru care salariul mediu este minim? a. SELECT cod_job, AVG(salariu) FROM angajati GROUP BY cod_job HAVING AVG(salariu)=(SELECT MIN(salariu) FROM angajati GROUP BY cod_job); b. SELECT cod_job, AVG(salariu) FROM angajati GROUP BY cod_job HAVING AVG(salariu)=(SELECT MIN(AVG(salariu)) FROM angajati GROUP BY cod_job); c. SELECT cod_job, AVG(salariu) FROM angajati GROUP BY cod_job HAVING MIN(salariu)=(SELECT AVG(MIN(salariu)) FROM angajati GROUP BY cod_job);

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