Sei sulla pagina 1di 19

Baze de Date 2010 _ Intrebări orientative

Baze de Date 2010 _ Intreb ă ri 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

c. chei externe

d. entitate independenta

plus eventuale coloane aditionale

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

fac parte din cheia primara). Sa se precizeze legatura cu tabelele

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 (

tabelul asociativ

imprumuta, a carui structura este data mai jos(codc, codcit si dataim

carte si cititor.

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

selectand

a. CREATE TABLE CARTEINFO

cartile care au coddom=’I’.

NUMBER(3), coddom CHAR(5))

(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’;

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

AS SELECT

FROM CARTE_INFO;

TABLE CARTE

codc, titlu, autor

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

WHERE

CARTE autor = ’BARBU’)

WHERE nrex < (SELECT

AVG(nrex)

b. MODIFY CARTE

SET

pret = (SELECT

FROM

SUM(pret)

CARTE);

WHERE

FROM WHERE nrex < (SELECT

carte autor = ’BARBU’) AVG(nrex)

FROM

CARTE);

c. UPDATE CARTE pret = ( SUM(pret) FROM WHERE

c. UPDATE CARTE pret = ( SUM(pret) FROM WHERE

carte

autor = ’BARBU’)

WHERE

nrex < ( AVG(nrex)

FROM

CARTE);

d. CARTE

UPDATE

 

pret = (SELECT FROM

SUM(pret)

carte

WHERE nrex < (

autor = ’BARBU’ and

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

GROUP BY codc;

dataef

IS NULL

b. SELECT COUNT(*) FROM IMPRUMUTA GROUP BY codc;

c.

FROM IMPRUMUTA

SELECT

codc, COUNT(*)

WHERE

GROUP BY codc;

dataef

IS NULL

d. SELECT COUNT(*) FROM IMPRUMUTA

WHERE

GROUP BY codc;

dataef =0

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

b.

AND

AND

SELECT

y.titlu = ’Baze de date’ y.autor = ’Popescu’;

x.titlu, x.pret

FROM

WHERE

AND

AND

c. SELECT

FROM

WHERE

AND

AND

d. 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

WHERE a.codp IN (SELECT DISTINCT codp

FROM COPII);

PROFESORI A

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

WHERE a.codp IS

PROFESORI A

NOT

b. SELECT a.nume, a.pren

(SELECT DISTINCT codp FROM COPII);

FROM

WHERE a.codp NOT IN (SELECT DISTINCT codp FROM COPII);

PROFESORI A

c. SELECT a.nume, a.pren

FROM

WHERE a.codp NOT IN SELECT

PROFESORI A

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), seriilor actiunilor sale?

a. SELECT a.seriain, a.seriasf, b.nume

intervalele

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

c. a.seriain, a.seriasf, b.nume actiuni a, actionari b

SELECT

FROM

WHERE

a.cod_act=b.cod_act ;

nume=‘&x’;

d. SELECT a.seriain, a.seriasf, b.nume

FROM actiuni a, actionari b WHERE a.cod_act=b.cod_act

OR

29. Se considera pentru actionarii unei firme,

b.nume=‘&x’;

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

WHERE NUME='ENE' , PREN='ANA’;

salariat, are_functia

c. SELECT Sum(SALARIU) AS SALARIU_CUMULAT

FROM

WHERE s.cod_salariat=a.cod_salariat AND NUME='ENE' AND PREN='ANA’;

salariat s, are_functia a

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 ,

AND cod_depart<> (SELECT cod_depart FROM department WHERE nume_depart = ‘Contractari’);

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

GROUP BY cod_cititor;

NOT NULL

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)

salariat;

b. SELECT RTRIM(LTRIM(nume))

FROM

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. nume_salariat, nume_departament salariati s, departamente d

SELECT

FROM

WHERE s.cod_departament = d.cod_departament;

b. nume_salariat, nume_departament salariati s, departamente d

SELECT

FROM

WHERE s.cod_departament(+) = d.cod_departament;

c. nume_salariat, nume_departament salariati s, departamente d

SELECT

FROM

WHERE s.cod_departament = d.cod_departament(+);

d. nume_salariat, nume_departament salariati s, departamente d

SELECT

FROM

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

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;

DISTINCT nume_functie

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_functi e 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

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;

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

WHERE cod_galerie IN (20, 40);

NATURAL

JOIN artist

USING cod_artist

d. SELECT titlu, nume, prenume

FROM opera

WHERE cod_galerie IN (20, 40);

JOIN artist ON (cod_artist)

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;

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. Considerând galeriile al caror cod este mai mic decât 50, care este comanda corecta care media valorilor operelor:

calculeaza

- 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

GROUP BY CUBE (cod_galerie, cod_artist,

WHERE cod_galerie < 50

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,

59. Se da urmatoarea vizualizare CREATE VIEW v_angajati AS

TO_CHAR(data_achizitiei, 'yyyy'));

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

WHERE 3>(SELECT

angajati a

COUNT(*)

FROM

angajati

WHERE

salariu > a.salariu);

b. SELECT nume

FROM

WHERE COUNT(*) >(SELECT 3

angajati a

c. SELECT nume

FROM angajati WHERE salariu > a.salariu);

FROM

WHERE 3>(SELECT

angajati

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

WHERE salariu

salariati s

=(SELECT MIN(salariu)

b. SELECT nume

FROM

angajati );

FROM

WHERE salariu

salariati

c. SELECT nume

=(SELECT salariu FROM WHERE

salariati salariu = MIN(salariu));

FROM

WHERE salariu

salariati s

=(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. titlu carte cod_carte NOT IN

SELECT

FROM

WHERE

(SELECT DISTINCT cod_carte

FROM

imprumuta

WHERE

dataef IS NULL);

c. titlu carte cod_carte IN

SELECT

FROM

WHERE

(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

FROM

WHERE

AND

b. SELECT

FROM

WHERE

AND

AND

c. SELECT

FROM

WHERE

AND

AND

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

FROM

GROUP BY

HAVING

b. SELECT

FROM

GROUP BY

HAVING

c. SELECT

FROM

GROUP BY

HAVING

cod_job, AVG(salariu) angajati cod_job AVG(salariu)=(SELECT MIN(salariu) FROM GROUP BY

cod_job, AVG(salariu) angajati cod_job AVG(salariu)=(SELECT MIN(AVG(salariu)) FROM GROUP BY

cod_job, AVG(salariu) angajati cod_job MIN(salariu)=(SELECT AVG(MIN(salariu)) FROM GROUP BY

angajati

cod_job);

angajati

cod_job);

angajati

cod_job);