Documente Academic
Documente Profesional
Documente Cultură
Baze de Date
Baze de Date
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
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
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));
c. IMPRUMUTA (
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;
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);
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
FROM carte x, carte y
WHERE x.pret > y.pret
AND y.titlu = ’Baze de date’
AND y.autor = ’ Popescu’;
c. SELECT x.titlu, x.pret
FROM carte x, carte y
WHERE x.pret > y.pret
AND titlu = ’Baze de date’
AND autor = ’ Popescu’;
d. SELECT x.titlu, x.pret
FROM carte x, carte y
WHERE x.pret > y.pret
AND y.titlu = ’Baze de date’, y.autor = ’ Popescu’;
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 salariat
WHERE nume LIKE '__a$';
b. SELECT nume
FROM salariat
WHERE nume LIKE '%a%';
c. SELECT nume
FROM salariat
WHERE 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;
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 având 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 având 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;
58. Considerând galeriile al caror cod este mai mic decât 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'));
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 corecta care obtine numele cititorilor si titlurile cartilor imprumutate de acestia in
anul 2008?
a. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND TO_CHAR(data_imprumut,’yyyy’) = 2008;
b. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND imprumuta.cod_cititor= cititor.cod_cititor
AND TO_CHAR(data_imprumut,’yyyy’) = 2008;
c. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND imprumuta.cod_cititor= cititor.cod_cititor
AND 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);