toate intr-un fisier 2011
Post on 09-Apr-2018
244 Views
Preview:
TRANSCRIPT
-
8/7/2019 Toate Intr-un Fisier 2011
1/595
baze_de_date
Probleme pentru examenul de licenta
1. Obaza de date relationala est
a.b.
c.
d.
O colectie de date interrelationate gestionate ca osinguraunitate
Unprodussoftware furnizat de unproducatorde baze de date
Ostructura de date, cum arfi un tabel,ovizualizare sauun inde
2. UnObiect al unei baze de date este
a.
b.
c.
d.
O colectie de inregistrari inrudite,stocate ca osingura unitateUnprodussoftware furnizat de unproducatorde baze de date
O structura, cum ar fi un tabel, o vizualizare sau un index
O colectie de date interrelationate gestionate ca osinguraunitate
Care din urmtoarele baze de date nu este un RDBMS (sistem de gestionare abazelode date
3.
a.
b.
c.
d.
Oracle DatabaseMySQL
Excel Database
Microsoft SQLServer
Un sistem RDBMS(sistem de gestionare abazelor de date relatioanale)nuinclude
urmatorul
4.
a.
b.
Acceptarea unui limbaj de interogareMecanisme de securitate,pentru a impiedica accesul si modificarea neautorizata a
datelor
Mutarea datelor insi dinfisiere de date,dupa cum este necesar
Generarea diagramelor ERD (Entity Relationship Diagram)
c.
d.
Componentele unei baze de date relationale nu inclu
5.
a.
b.
c.
d.
TabeleDiagrameERD
RestrictiiPrintre tipurile de restrictii care pot fi folosite inbazele de date relationale,nuse numara
6.
a.
b.
c.
d.
e.
NOTNULL
RelatiiCHECK
Cheie primara
UnicitateNormalizarea nurezolva
7.
a.
b.
c.
d.
Anomalia de stergereAnomalia de actualizare
Anomalia de inserare
Anomalia de creare
Un identificatorunic (cheie primara)
8.
a. Poate fi compusnumai dintr-unsingur atribut
-
8/7/2019 Toate Intr-un Fisier 2011
2/595
b.
c.
d.
Poate fi compusdin atribute concatenate
Poate fi compusdin atribute cuvaloarea NULL
Poate fi compusdin zero,unul saumai multe atribute
9. Prima forma normala rezolva anomaliile cauzate d a.
b.c.
d.
Grupurile repetitive si atributele
multivaloareDependentele partiale de cheia primara
Dependentele tranzitive
Adoua forma normala rezolva anomaliile cauzate de
10.
a.
b.
c.
d.
Grupurile repetitiveDependentele partiale de cheia primaraGrupurile repetitive si atributele multi valoare
Dependentele tranzitive
11. A treia forma normala rezolva anomaliile cauzate de
a.
b.
c.d.
Dependentele partiale de cheia primaraGrupurile repetitive
Dependentele tranzitiveAtributele multivaloare
Problemele de dependen tranzitiv
12.
a.
b.
c.
d.
Sunt rezolvate de a doua formnormalSunt rezolvate de prima formnormal
Apar atunci cndun atribut non-cheie depinde doarde oparte a cheii primare
Sunt rezolvate de a treia formnormal
SQL este
13.
a.b.
c.
d.
Un limbaj procedural
Un limbaj neproceduralUn limbaj orientat spre obiecte
Un limbaj grafic,folosit pentrudefinirea diagramelorERsi a diagrameloconceptuale
Unmodel de date reprezinta o colectie integrata de concepte care nudescriu
14.
a.
b.
c.
d.
daterelatii dintre datedate despre echipa realizatoare a modelului
constrngeri existente asupra datelorsistemului real analizat.
15. Nu este caracteristica a modelului relational
a.
b.
c.
prezenta tuplurilor identicearticolele unui domeniusunt omogenetoate valorile unui domeniu corespunzatoare tuturor cazurilornumai pot fi
descompuse in alte valori (sunt atomice)
fiecare coloana defineste undomeniudistinct si nuse poate repeta in cadrul
aceleiasi relatii
d.
Modelul relational nuare ca regula de integritate structurala
16.
a.
b.
Unicitatea cheii.Cheia primara trebuie sa fie unica si minimala.Integritatea entitatii.Atributele cheii primare trebuie sa fie diferite de valoarea
null.
-
8/7/2019 Toate Intr-un Fisier 2011
3/595
c. Integritatea referirii.O cheie externa trebuie sa corespunda unei valori acheii
d. Integritatea referirii.O cheie externa trebuie sa fie ori null in intregime,ori scorespunda unei valori a cheii primare asociate.
17. Relatia m:ndevine inmodelul relational
a. tabel asociativ cu cheia primara formata numai dindoua chei externe pentru celedoua tabele asociate
tabel asociativ cu cheia primara formata din doua chei externe pentru cele
doua tabele asociate plus eventuale coloane aditionalechei externe
entitate independenta
b.
c.
d.
Care nu este un concept utilizat pentru a descrie formal - uzual - fizicelementele dbaza ale
18.
a.
b.
c.
d.
relatie - tablou-fisiertuplu- linie- inregistrareatribut - coloana - camp
domeniu - zona- functieInstructiunile SQLnufac parte din categoria
19.
a.
b.
c.
d.
Limbajul de interogare a datelor(DQL)Limbajul de definire a datelor(DDL-Data DefinitionLanguage)
Limbajul de selectare a datelor (DSL - Data Selection Language)
Limbajul de manipulare a datelor(DML-Data ManipulationLanguage)
20. Limbajul de definire a datelor(DDL-Data DefinitionLanguage)nu include urmatoarea instructiune
a.
b.
c.
d.
DELETECREATE
ALTERDROP
Limbajul de manipulare a datelor(DMLData ManipulationLanguage)nu include instructiunie 21. a.b.
c.
d.
INSERT
UPDATEDELETE
ALTER
Tipurile de date temporale standardnu includ
22.
a.
b.
c.
d.
DATE
DATETIMETIME
TIMESTAMP
Valorile NULL
23.
a.b.
c.
d.
Sunt egale cu alte valori NULLEste acelasi lucru ca si spatiile libere
Sunt intotdeauna permise inmodprestabilit
Pot fi folosite pentru reprezentarea datelor care lipsesc sau nu sunt
24. Definitia unei coloane din instructiunea CREATETABLEnupoate includea.
b.
c.
Numele tabeluluiO clauza DEFAULT
O clauza NULLsauNOTNULL
-
8/7/2019 Toate Intr-un Fisier 2011
4/595
d. Numele coloanei
25. Sintaxa corecta pentruorestrictie NOTNULL est a.
b.
c.
d.
nume_coloananume_coloana
nume_coloan
REFERENCES NOTNULLtip_de_DATA ISNOTNUL
tip_de_DATA NOT NULL
DEFAULT [NULL|NOTNULL
26. Sintaxa corecta pentruorestrictie UNIQUE este
a.
b.
c.
d.
[CONSTRAINT nume_restrictie] UNIQUE {nume_coloana[,numecoloana...])[CONSTRAINTnume_restrictie]UNIQUE(nume_tabel)
nume_coloana REFERENCESUNIQUEnume_tabel
Sintaxa corecta pentruorestrictie referentiala asupra unei coloane este
27.
a.
b.
c.
d.
CONSTRAINTnume_restrictie]REFERENCESnume_tabelnume_coloana REFERENCES nume_tabel
FOREIGNKEYnume_coloana REFERENCESnume_tabel (nume_coloana)
REFERENCES nume_tabel (nume_coloana)
Utilizarile valide ale instructiunii ALTERTABLE nu includ
28.
a.
b.
c.
d.
Adaugarea coloanelorEliminarea unei chei primare
Redenumirea unui tabel
Adaugarea unei restrictii
29. Nu este functie SQLstandardpentrusiruri de caractere
a.
b.
c.
d.
UPPERLENGTH sau LEN
LOWER
LIKE
Operatorul UNION
30.
a.
b.
Include randurile duplicate insetul de rezultate
Combina seturile de rezultate a doua interogari intr-unsingurset de
rezultate si elimina randurile duplicate dinsetul de rezultateCombina doua interogari intr-osingura interogare de tip join
Este numit JOIN inunele implementari SQL
c.
d.
O instructiune SQL care contine ofunctie de agregare
31.
a.
b.
c.
d.
Nupoate include, in acelasi timp,o clauza GROUPBYsi o clauza ORDERBYTrebuie sa includa o clauza GROUPBY
Trebuie sa includa o clauza ORDERBY
Poate contine si coloane obisnuite si coloane calculate
32. Care este varianta corecta pentru a crea tabelul Salariat, cu caracteristicile de mai jos?
de dimensiunenumarde
COD_ANG
NUME
PRENUME
DATA_ANGVARST
A
EMAIL
SALARIU
not nullnumericde5
sir
caractere de
maxim
20
sir caractere
de maxim20
date,
valoare
implicita
data curent
numeric
de2
sir de
caractere de
dimensiune
fixa,de30
valoare
implicita
0
cu2
-
8/7/2019 Toate Intr-un Fisier 2011
5/595
a. CREATE TABLE SALARIAT (cod_ang NUMBER(5) NOTNULL, nume VARCHAR2(20),prenume VARCHAR2(20),
data_angajarii DATE DEFAULTSYSDATE, varsta NUMBER(2),
email CHAR(50),salariu NUMBER(10,2) DEFAULT 0);
CREATE TABLE SALARIAT (cod_ang NUMBER(5)
nume VARCHAR2(20),
prenume VARCHAR2(20),data_angajarii DATE ,
varsta NUMBER(2),
email CHAR(50),
salariu NUMBER(10,2) DEFAULT 0);
CREATE TABLE SALARIAT (
cod_ang NUMBER(5) , NOT NULL,
nume VARCHAR2(20),prenume VARCHAR2(20),
data_angajarii DATE , DEFAULT SYSDATE
varsta NUMBER(2),email CHAR(50),salariu NUMBER(10,2) , DEFAULT 0);
b.
c.
33. Pentru a insera in tabelul SALARIAT inregistrari
implicita
10cu2
care varianta este incorecta?
a. INSERTINTOSALARIAT(COD_ANG,NUME,PRENUME,DATA_ANG,VARSTA,EMAIL,SALARIU)VALUES(5, Ene, Ana, 1/06/2009, 20, ea@gmail.com, 2500.50)
INSERT INTO SALARIAT(COD_ANG,NUME,PRENUME, VARSTA,EMAIL)
VALUES(5, Ene, Ana, 20, ea@gmail.com)
INSERT INTO SALARIAT(COD_ANG,NUME,PRENUME,VARSTA,EMAIL,
SALARIU) VALUES(5, Ene, Ana, 1/06/2009, 20, ea@gmail.com)INSERT INTO SALARIAT
VALUES(5, Ene, Ana, 1/06/2009, 20, ea@gmail.com, 2500.50)
b.
c.
d.
34. Care este varianta corecta pentru a crea tabelul CARTE, cu caracteristicile de mai jos, indicand cheile la n
de coloana?(Tabelele DOMENIU_CARTE si CARTE sunt in relatia 1:M)
CARTE(codc CHAR(5), titluVARCHAR2(30), autorVARCHAR2(30),pret NUMBER(8,2),nrex
NUMBER(3), coddomCHAR(5))
a. CREATETABLE CARTE
COD_ANG
NUME
PRENUMEDATA_AN
G
VARSTA
EMAIL
SALARIU
not null
numericde5
sir
caracterede
maxim20
sir caractere
de maxim20
date,
valoare
implicitadatacurent
numericde2
sirde
caractere
de
dimensiunefixa,de30
valoare
0
numardezecimale
-
8/7/2019 Toate Intr-un Fisier 2011
6/595
(codc CHAR(5)PRIMARYKEYtitlu VARCHAR2(30),
autorVARCHAR2(30),pret
NUMBER(8,2), nrex
NUMBER(3), b. CREATETABLECARTE
(codc CHAR(5)PRIMARYtitlu VARCHAR2(30),
autor VARCHAR2(30),
pret
NUMBER(8,2), nrex
NUMBER(3),coddom CHAR(5)NOTNULL
c. CREATETABLE CARTE
(codc CHAR(5),
titlu VARCHAR2(30),autorVARCHAR2(30),pret
NUMBER(8,2), nrex
NUMBER(3),
coddom CHAR(5)NOTNULL
PRIMARYKEY(codc),
FOREIGNKEY(coddom)
REFERENCESDOMENIU(coddom));
35. Care este varianta corecta pentru a crea tabelul CARTE, cu caracteristicile de mai jos(codc cheie primar
coddom cheie secundara), indicand cheile la nivel de tabel?
CARTE(codc CHAR(5), titluVARCHAR2(30), autorVARCHAR2(30),pret NUMBER(8,2),nrex
NUMBER(3), coddomCHAR(5))
a. CREATETABLE CARTE
(codc CHAR(5)PRIMARYKEYtitlu VARCHAR2(30),autorVARCHAR2(30),pret
NUMBER(8,2), nrex
NUMBER(3),
b. CREATETABLE CARTE
(codc CHAR(5)PRIMARYKEYtitlu VARCHAR2(30),
autorVARCHAR2(30),pret
NUMBER(8,2), nrex
-
8/7/2019 Toate Intr-un Fisier 2011
7/595
coddomCHAR(5)NOTNULLREFERENCESDOMENIU(coddom));
c. CREATE TABLE CARTE
(codc
titlu
autor
CHAR(5),
VARCHAR2(30),
VARCHAR2(30),NUMBER(8,2),nrexNUMBER(3),
coddom CHAR(5) NOT
NULL, PRIMARY KEY
(codc),
FOREIGN KEY (coddom)
36. Sa se creeze tabelul asociativ imprumuta, a carui structura este datamai jos(codc, codcit si
dataimsunt chei primare).Sa se precizeze legatura cu tabelele carte si cititor,aflate inrelatia M:
a. IMPRUMUTAcodc
codcit
dataim
datare
s
CHAR(5),
CHAR(5),
DATE DEFAULT
SYSDATE,
DATE,PRIMARY KEY (codel, codec, dataim),
FOREIGNKEY(codc)
REFERENCES CARTE
(codc), FOREIGN KEY (codcit)
REFERENCES
b. IMPRUMUTA(
codccodcit
dataim
datares
dataef
CHAR(5) PRIMARYKEY,CHAR(5) PRIMARYKEY,
DATE DEFAULT SYSDATEPRIMARYKEY,
DATE,
DATE,FOREIGNKEY(codc)
REFERENCESCARTE(codc),
FOREIGNKEY(codcit)
REFERENCESCITITOR(codcit));
IMPRUMUTA(c.
codccodcit
dataim
datares
dataef
CHAR(5)REFERENCESCARTE(codc),CHAR(5)REFERENCESCITITOR(codcit),
DATE DEFAULT SYSDATE,
DATE,
DATE,PRIMARYKEY(codel, codec,dataim));
37. Sa se creeze tabelul CARTE_INFO(codc, titlu, autor)prin copiere din tabel
-
8/7/2019 Toate Intr-un Fisier 2011
8/595
CARTE(codc CHAR(5), titluVARCHAR2(30), autorVARCHAR2(30),pret NUMBER(8,2),nrex
NUMBER(3), coddomCHAR(5))
selectand cartile care au coddom=I
a. CREATETABLE CARTEINFO(codctitlu
autor
CHAR(5),VARCHAR2(30),
VARCHAR2(30),
FROMCARTEPRIMARYKEY(codc),
FOREIGNKEY(coddom)
REFERENCESDOMENIU(coddom));
b. CREATETABLE CARTE_INFO(codc CHAR(5) PRIMARY
titlu
autor
VARCHAR2(30),
VARCHAR2(30),FROMCARTE
WHERE coddom=I;
CREATETABLECARTE_INF
ASSELECT codc, titlu, autor
FROM CARTE
WHERE coddom=I;
c.
38. Pentru a introduce in tabelul SALARIA
0
10cu2
doua coloane: Cod_Funct si Email ce varianta folosim
a. ALTER TABLE SALARIAT ADD Cod_Funct NUMBER(2), ALTER COLUMN ADDEmail char(25);
ALTER TABLE SALARIAT ADD Cod_Funct NUMBER(2), ADD Email CHAR(25);
ALTER TABLE SALARIAT ADD (Cod_Funct NUMBER(2) , Email CHAR(25));ALTER TABLE SALARIAT ADD Cod_Funct NUMBER(2), ALTER ADD Email
char(25);
b.
c.d.
39. Ce comanda creeaza tabelul SALARIAT_1 care s aiba aceeiasi structura
tabelul SALARIAT
implicita
numarde
COD_ANG
NUME
PRENUMEDATA_AN
G
VARST
A
EMAIL
SALARIU
not nullnumericde5
sirde
caracterede
maxim20
sir caractere
de maxim20
date,
valoare
implicitadata
numeric
de2
sirdecaractere
de
dimensiune
valoare
0
COD
_ANG
NUME
PRENUMEDATA_AN
G
VARSTA
SALARIU
not nullnumericde5
sircaractere
demaxim20
sir caractere
de maxim20
date,
valoare
implicitadata
curent
numericde2
valoare
implicitanumarde
zecimale
-
8/7/2019 Toate Intr-un Fisier 2011
9/595
si sa contina salariatii care ausalariu>100?a. CREATE TABLE SALARIAT_1
SELECT * FROM SALARIAT WHERE SALARIU>100;CREATE TABLE SALARIAT_1
AS SELECT * FROM SALARIAT WHERE SALARIU>100;CREATE TABLE SALARIAT_1AS SELECT FROM SALARIAT WHERE SALARIU>100;
CREATE TABLE SALARIAT_1AS SELECT COD_ANG, SALARIU FROM SALARIAT WHERE SALARIU>100
b.
c.
d.
40. Ce comanda sterge din tabelul
implicita
numarde
zecimale
coloana nume si coloana salariu?
a. ALTER TABLE SALARIATDROP nume, salariu;
ALTER TABLE SALARIATDROP COLUMN (nume, salariu);
ALTER TABLE
SALARIAT DROP (nume,
salariu);ALTER TABLE SALARIAT
b.
c.
d.
41. Ce comanda creeaza corect tabelul SALARIAT, specificand constrangerile
numarde
zecimale
a. CREATE TABLE salariat(cod_ang NUMBER(5) PRIMARY
KEY, nume VARCHAR2(20) NOTNULL, prenume VARCHAR2(20),data_ang DATE DEFAULT
SYSDATE, varsta NUMBER(2),email CHAR(30) UNIQUE,salariu NUMBER(10,2) CHECK (salariu >
COD_ANG
NUME
PRENUMEDATA_AN
G
VARSTA
EMAIL
SALARIU
cheieprimaranumericde5
notnullsirdecaracterede
maxim20
sir caractere
de maxim20
date,valoare
implicitadata
curent
numericde2
unic
sirdecaractere
de
dimensiun
e fixa,
de
> 0
10cu2
COD
_ANG
NUME
PRENUMEDATA_AN
G
VARSTA
EMAIL
SALARIU
not nullnumericde5
sirde
caracterede
maxim20
sir caractere de maxim20
date, valoare
implicita
data curent
numeric de
2
sir de
caractere
de
dimensiune
fixa,de30
valoare
0
10cu2
10cu2
zecimale
-
8/7/2019 Toate Intr-un Fisier 2011
10/595
b. CREATE TABLE salariat(cod_ang NUMBER(5) PRIMARY KEY,
nume VARCHAR2(20) NOT NULL,
prenume VARCHAR2(20),
data_ang DATE DEFAULT SYSDATE,
varsta NUMBER(2),
email CHAR(30) UNIQUE,salariu NUMBER(10,2) > 0));
c. CREATE TABLE salariat(
cod_ang NUMBER(5) PRIMARY KEY,
nume VARCHAR2(20) NOT NULL,
prenume VARCHAR2(20),data_ang DATE DEFAULT SYSDATE,
varsta NUMBER(2),
email CHAR(30),
salariu NUMBER(10,2) CHECK (salariu > 0));
42. Care este comanda corecta prin care se adauga constrangerea de cheie p
IMPRUMUTA (cod_cititor, cod_carte, data_imprumut, data_restituire)?
a. ALTER TABLE IMPRUMUTAADD PRIMARY KEY cod_cititor, PRIMARY KEY cod_carte, PRIMARY KEY
data_imprumut;ALTER TABLE IMPRUMUTA
ADD PRIMARY KEY cod_cititor, cod_carte, data_imprumut;
ALTER TABLE IMPRUMUTA
ADD CONSTRAINT cp PRIMARY KEY (cod_cititor, cod_carte,
data_imprumut);ALTER TABLE IMPRUMUTA
b.
c.
d.
43. Pentru tabelul Salariat
care este comanda corecta, pentru a modifica salariu la 3000, pentru angajatii care lucreaza in departame10 si au salariul
-
8/7/2019 Toate Intr-un Fisier 2011
11/595
ASSELECT *FROMCARTE_INFO;
d. INSERT INTO
SELECt
*
FROM CARTE_INFO;
45. Pentruprofesorii titulari,sa se maresca cumulul cu10%si sa se rotunjeasca la 2 zecimaleUPDATEPROFSETCUMUL=ROUND([CUMUL]*1.1,2)
WHERETITULAR="Y";
a. UPDATEPROFSETCUMUL=(CUMUL*1.1)
WHERETITULAR=Y;MODIFYPROFSETCUMUL=ROUND(CUMUL*1.1,2)WHERETITULAR=Y;
UPDATE PROF SET CUMUL = ROUND(CUMUL*1.1,2
WHERETITULAR=Y;
UPDATEPROFSETCUMUL=ROUND(CUMUL*1.1,2);
b.
c.
d.
S se modifice pretul cartilor din biblioteca, care se gasesc intr-un numar de exemplare
mai micdecat media numarului de exemplare pe biblioteca. Noua valoare apretului sa fie egala
46.
a. UPDATE CARTE
SET pret =
(SELECT
FROM
SUM(pret)CARTE
autor=BARBUWHERE nrex
-
8/7/2019 Toate Intr-un Fisier 2011
12/595
care este secventa corecta pentru o instructiune INSERT cu o instructiune SELECT interna, pentru a insera in
tabelul TOTALURI, un rand pentru fiecare facultate din tabelul PROF, care sa contina numarul de profesori
din facultate si suma salariilor lor?
a. INSERT TO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)FROM PROF ORDER BY COD_FAC;
INSERT INTO TOTALURI
SELECT COD_FAC, COUNT(*) AS NR_PROF, SUM(SALARIU) AS TOTAL_SA
FROM PROF ;
INSERT INTO TOTALURI
SELECT COD_FAC, COUNT(*) AS NR_PROF, SUM(SALARIU) ASTOTAL_SAL FROM PROF GROUP BY COD_FAC;
b.
c.
48. Pentru tabelul
care este secventa corecta pentru a modifica salariile cu 10% , care nu contin valori NULL?
a. UPDATE PROF SET SALARIU = SALARIU*1.1WHERE SALARIU NOT NULL;
UPDATE PROF SET SALARIU = SALARIU*1.1WHERE SALARIU IS NOT NULL;UPDATE PROF SElLECT SALARIU = SALARIU*1.
WHERE SALARIU 0;
b.
c.
49. Pentru tabelul PROF
care este secventa corecta pentru a sterge toate cadrele didactice care sunt profesori consultanti?
a.b.c.
d.
DELETE FROM PROF WHERECOD_FUNCT=C;DELETE PROF WHERE COD_FUNCTC;DROP FROM PROF WHERE COD_FUNCT=C;
50. Pentru tabelul:
FAC
care este secventa corecta pentru o inserare, folosind instructiunea SELECT
a. INSERT INTO FAC
(COD_FAC, DENUMIRE, ADRESA)SELECT VALUES(MAX(COD_FAC)+1, 'LIMBI', 'ION GHICA')
INSERT INTO FAC
SELECT MAX(COD_FAC)+1, 'LIMBI', 'ION GHICA'FROM FAC;
INSERT INTO FAC(COD_FAC, DENUMIRE, ADRESA)
SELECT MAX(COD_FAC)+1, 'LIMBI', 'IONGHICA' FROM FAC;
b.
c.
Pentru tabelulPROF
51.
cod_fac# denumire adresa
cod_prof# cod_fac nume pren salariu cod_funct
cod_prof# cod_fac pren salariu
cod_fac# nr_prof total_sal
-
8/7/2019 Toate Intr-un Fisier 2011
13/595
care este secventa corecta pentru a afisa toti profesorii impreuna cumedia _salariupentrufiecare
facultate ,rotunjita la doua pozitii zecimale
a. SELECT COD_FAC,
ROUND (AVG (SALARIU), 2)FROM PROFORDER BY COD_FAC;
SELECT COD_FAC,ROUND (AVG (SALARIU, 2)FROM PROF
GROUP BY COD_FAC;
SELECT COD_FAC,ROUND (AVG (SALARIU), 2FROM PROF
GROUP BY COD_FAC;
AS
b.AS
c.AS
d. SELECT FROM PROF COD_FAC,
ROUND AVG (SALARIU), 2 ASmedie_salariu
52. Pentrutabelul
care este secventa corecta pentru a afisa suma salariilor tuturorprofesorilordinuniversitate.
a. SELECT SUM (Salariu) AS Total_SalariuFROM PROF;
SELECT SUM (Salariu) AS Total_Salariu
FROM PROFGROUP BY COD_FAC;
SELECT SALARIU, SUM (Salariu) AS
Total_SalariuFROM PROF;
SELECT COD_FAC, SUM (Salariu) AS Total_Salariu
b.
c.
d.
53. Pentrutabelul
care este secventa corecta pentru a afisa toti profesorii pentru care COD_FAC=1
salariu>=1200,sau toti profesorii pentru care COD_FAC=3si salariu1200)
AND (COD_FAC =3 OR SALARIU1200)
AND (COD_FAC =3 AND SALARIU
-
8/7/2019 Toate Intr-un Fisier 2011
14/595
c. SELECT COD_FAC, COD_PROF, NUME,SALARIU
FROM PROF
WHERE (COD_FAC=1 AND SALARIU >1200)OR (COD_FAC =3 AND SALARIU1200
OR (COD_FAC =3 OR SALARIU
-
8/7/2019 Toate Intr-un Fisier 2011
15/595
b. SELECT NUME, PREN, DENUMIREFROM FAC, PROF
WHEREFAC.COD_FAC=PROF.COD_FAC ORDERBY FAC.DENUMIRE;
c. SELECT NUME, PREN, DENUMIRE
FROM FAC, PROFWHERE FAC.COD_FAC=PROF.COD_FAC;
a. SELECT codcFROM IMPRUMUTAWHERE dataefIS
GROUPBY codc;b. SELECT COUNT(*)
FROM GROUPBY codc;
c. SELECT codc,COUNT(*)
FROM IMPRUMUTA GROUPBY codc;
d. SELECT COUNT(*)FROM
IMPRUMUTA
GROUPBY codc;
Care este secventa corecta care s afieze numrul crilor mprumutate celpuin dedou ori(pentru fiecare carte mprumutat mai mult dect o dat s se obin numrul de cte
59.
a. SELECT
COUNT(COUNT(codel))FROM imprumuta
GROUPBY codcarte
HAVING COUNT(*)>1;
b.
FROMGROUPBY
HAVING
imprumutacodcarte
COUNT(*)>1;c. SELECTCOUNT(COUNT(codel))
FROM imprumuta
WHERESELECT
FROM
COUNT(*)>1;COUNT(codel)
imprumuta
d.
ORDERBYBY codcarte
HAVING COUNT(*)>1;
Care este secventa corecta care afiseaza pentru fiecare domeniu de carte, numrul
crilor din domeniu,media preurilori numrul total de exemplare
60.
a. SELECT codcarte,COUNT(*),AVG(pret)
FROM CARTE
-
8/7/2019 Toate Intr-un Fisier 2011
16/595
GROUPBY codcarte;SELECT coded, AVG(pret),SUM(nrex)FROM CARTE
GROUPBY codcarte;
SELECT codcarte,COUNT(*),AVG(pret),
SUM(nrex) FROM CARTEGROUPBY codcarte;
SELECT COUNT(*),AVG(pret),SUM(nrex)
FROM CARTE
ORDERBY codcarte;
b.
c.
d.
61. Pentrutabelele:
FAC
care este secventa corecta pentru o interogare de uniune externa catre stanga, care sa afiseze toti profesorii sidenumirile facultatilor la care predau
a. SELECT NUME, PREN, DENUMIREFROM FAC PROF LEFT OUTER JOIN ON A.COD_FAC = B.COD_FAC;
SELECT NUME, PREN, DENUMIRE
FROM FAC LEFT OUTER JOIN PROF ON
A.COD_FAC = B.COD_FAC;
SELECT NUME, PREN, DENUMIREFROM FAC A LEFT OUTER JOIN PROF B ON A.COD_FAC =
b.
c.
62. Pentru tabelele:
PROF
FUNCTII
care este secventa corecta pentru o subinterogare necorelata, care sa afiseze toate functiile pentru care nexista profesorii incadrati
a. SELECT cod_funct, nume_functFROM functiiWHERE cod_funct NOT IN(SELECT DISTINCT cod_funct FROM
prof);SELECT cod_funct, nume_funct
FROM functiiWHERE cod_funct NOT IN
SELECT DISTINCT cod_funct FROM prof;SELECT cod_funct, nume_funct
FROM functiiWHERE cod_funct IN
b.
c.
63. Care este comanda corecta care pentru fiecare facultate, se insereaza in tabelul TOTALURI(cod_f
nr_prof, total_sal_fac) numarul de profesori si suma salariilor pe care facultatea o plateste profesorilor s
a. INSERT TO TOTALURI
cod_funct# nume_funct
cod_prof# cod_fac nume pren salariu cod_funct
cod_fac# denumire adresa
cod_prof# cod_fac nume pren salariu
-
8/7/2019 Toate Intr-un Fisier 2011
17/595
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)FROM PROF ORDER BY COD_FAC;INSERT INTO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)
FROM PROF ;
INSERT INTO TOTALURI
SELECT COD_FAC, COUNT(*) ,SUM(SALARIU) FROM PROFGROUP BY COD_FAC;INSERT INTO TOTALURI
SELECT COD_FAC, SUM(COD_PROF), SUM(SALARIU)
FROM PROFGROUP BY COD_FAC;
b.
c.
d.
64. Sse obin titlurile i preurile crilormai scumpe dect cartea avnd titlul Baze de date, al cru
autor este Popescu(self join).
a. SELECT
FROMWHERE
AND
AND
SELECT
FROM
WHEREAND
AND
SELECT
FROMWHERE
AND
AND
SELECT
FROM
WHERE
x.titlu,x.pret
carte x, yx.pret < y.pret
y.titlu=Baze de date
y.autor=Popescu;
x.titlu,x.pret
carte x, carte y
x.pret > y.prety.titlu=Baze de date
y.autor=Popescu;
x.titlu,x.pret
carte x, carte y
x.pret >y.prettitlu=Baze de dateautor=Popescu;
x.titlu,x.pret
carte x, carte y
x.pret >y.pret
y.titlu=Baze de date,y.autor=Popescu;
b.
c.
d.
65. Pentru tabelelePROFESORI(codp,nume,pren,salariu)
COPII(codp,nume_c,virsta)
care este secventa corecta pentru a afisa profesorii cu copii
a. SELECT a.nume, a.prenFROM PROFESORIA
WHERE a.codp IN (SELECT DISTINCT
codp
FROMCOPII);
SELECT a.nume, a.pren
FROMPROFESORIA
WHERE codpIN(SELECT codp
b.
-
8/7/2019 Toate Intr-un Fisier 2011
18/595
c. SELECT a.nume, a.prenFROMPROFESORIAWHERE a.codpIN COPII;
SELECT a.nume, a.pren
FROMPROFESORIA
WHERE a.codpINDISTINCT codpFROMCOPII;
d.
66. Pentru tabelele
PROFESORI(codp,nume,pren,salariu)COPII(codp,nume_c,virsta)
care este secventa corecta pentru a afisa profesorii fara copii
a. SELECT a.nume, a.prenFROM PROFESORIA
WHERE codpNOTIN(SELECT codp FROMCOPII);
SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codpNOTIN(SELECTDISTINCT codpFROMCOPII);SELECT a.nume, a.pren
FROM PROFESORIA
WHERE a.codpNOTINSELECT codpFROM copii;
SELECT a.nume, a.pren
FROM PROFESORIA
b.
c.
d.
Se considera pentru actionarii unei firme, urmatoarele tabeleACTIONARI(nume varchar2(20), cod_act number(5))
ACTIUNI(cod_act number(5),seriainnumber(8),seriasfnumber(8),valoarnumber(8))
(unde seriainsi seriasfreprezinta seria de inceput,respectivde sfarsit al intervalului de actiuni pe
care il are un actionar).Care este secventa corecta care afiseaza pentruun actionar(introdusde la tastatura), intervalele
seriilor actiunilorsale
67.
a. SELECT a.seriain, a.seriasf, b.numeFROM actiuni a, actionari b
WHERE a.codact=b.codact ANDb.nume=&x;
SELECT a.seriain, a.seriasf,b.nume
FROM actiuni , actionari
WHERE a.codact=b.codact ANDnume=&x;
SELECT a.seriain, a.seriasf,b.nume
FROM actiuni a, actionari bWHERE a.codact=b.codact ;
SELECT a.seriain, a.seriasf,b.nume
FROM actiuni a, actionari b
b.
c.
d.
68. Se considera pentru actionarii unei firme, tabelul
ACTIUNI(cod_act number(5),seriainnumber(8),seriasfnumber(8),valoarnumber(8))
(unde seriain si seriasfreprezinta seria de inceput,respectivde sfarsit al intervalului de actiuni pe
care il are un actionar).
-
8/7/2019 Toate Intr-un Fisier 2011
19/595
Care este secventa corecta care afiseaza suma necesara firmei pentruplata tuturor
devidentelor(numrul de actiuni inmultit cuvaloarea unei actiuni)?a. SELECTSUM((seriain+seriasf)*valoare))
FROMACTIUNI;
SELECTSUM((seriasf-seriasf)*valoare))
FROMACTIUNI;SELECTSUM((seriain-seriasf)*valoare))
FROMACTIUNI;
SELECT SUM((seriasf-
seriain+1)*valoare)) FROM
b.
c.
d.
69. 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 multefunctii, in diferite compartimente?
a. SELECT COUNT(SALARIU) AS SALARIU_CUMULAT
FROM salariat, are_functiaWHERE s.cod_salariat=a.cod_salariat
AND NUME='ENE' AND PREN='ANA;
SELECT Sum(SALARIU) AS SALARIU_CUMULAT
FROM salariat, are_functiaWHERE NUME='ENE' , PREN='ANA;
SELECT Sum(SALARIU) ASSALARIU_CUMULAT FROM salariat s,are_functia aWHERE s.cod_salariat=a.cod_salariat
b.
c.
70. Pentru tabelele:
PROF
FAC
care este secventa corecta pentru o subinterogare corelata, care sa afiseze toate facultatile pentru care susalariile profesorilor este mai mare 10000
a. SELECT DISTINCT DENUMIREFROM FACWHERE 10000< (SELECT sum(salariu)
FROM PROF WHERE A.COD_FAC=B.COD_FAC);
SELECT DISTINCT
DENUMIRE FROM FAC AWHERE 10000< ( SELECT sum(salariu)FROM PROF B WHEREA.COD_FAC=B.COD_FAC);
SELECT DISTINCT DENUMIRE
FROM FAC AWHERE 10000< SELECT sum(salariu)
b.
c.
71. Care este comanda corecta pentru a afisa toti salariatii , in ordine crescatoare dupa nume, care sunt manageri ?
a. SELECT DISTINCT sef.nume, angajat.cod_manager
FROM salariati sef, salariati angajat
cod_fac# denumire adresa
cod_prof# cod_fac nume pren salariu cod_funct
-
8/7/2019 Toate Intr-un Fisier 2011
20/595
WHERE sef.cod_salariat= angajat.cod_managerORDER BY sef.nume;SELECT DISTINCT sef.nume, angajat.cod_manager
FROM salariati sef, salariati angajatWHERE cod_salariat= cod_manager
ORDER BY sef.nume;
SELECT DISTINCT nume, cod_managerFROM salariati sef, salariati angajat
WHERE sef.cod_salariat= angajat.cod_manager;ELECT DISTINCT nume, cod_manager
FROM salariati sef, salariati angajat
WHERE cod_salariat= cod_manager
ORDER BY sef.nume;
b.
c.
d.
72. Care este comanda corecta care sa afiseze daca exista angajati care nu lucreaza in departamentul Contractar
si al caror salariu coincide cu salariul unui angajat din departamentul Contractari?
a. SELECT nume, salariu, cod_departFROM 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);
SELECT nume, salariu, cod_departFROM 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);
SELECT nume, salariu, cod_departFROM salariati
WHERE (salariu) IN (SELECT salariu FROM salariati s, department
dWHERE s.cod_depart = d.cod_depart AND nume_depart =
Contractari) AND cod_depart (SELECT cod_depart FROM
b.
c.
73. Care este comanda corecta care afiseaza numarul total de carti imprumutate si restituite pentru fiecare c
al unei biblioteci?
a. SELECT cod_cititor, COUNT()FROM imprumuta
WHERE data_restituirii NOT NULL
GROUP BY cod_cititor;
SELECT cod_cititor, COUNT(*)FROM imprumutaWHERE data_restituirii IS NOT NULL;
SELECT cod_cititor, COUNT(*)FROM imprumutaGROUP BY cod_cititor;
SELECT cod_cititor,COUNT(*) FROM imprumutaWHERE data_restituirii IS NOTNULL
b.
c.
d.
-
8/7/2019 Toate Intr-un Fisier 2011
21/595
74. Care este comanda corecta care determina micsorarea salariilor cu 10%, cu rotunjire la 2 zecimale ,
angajatilor care nu sunt titulari?
a. UPDATE salariatSET salariu=ROUND(salariu*0.9, 2);UPDATE salariat
SET salariu=ROUND(salariu*1.1)
WHERE titular =N;UPDATE salariat
SET salariu = ROUND(salariu*0.9,2) WHERE TITULAR=N;UPDATE salariat
SET salariu=ROUND(salariu+salariu*0.1)
WHERE titular =Y;
b.
c.
d.
75. Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de ENE DAN?
a. SELECT nume, salariuFROM salariati
WHERE cod_ang = (SELECT cod_manager FROM salariatiWHERE UPPER(nume) ='ENE' , UPPER(pren) ='DAN' );
SELECT nume, salariuFROM salariati
WHERE cod_manager IN (SELECT cod_ang FROM salariati
WHERE nume ='ENE' , pren ='DAN' );SELECT nume, salariu
FROM salariati
(SELECT cod_ang FROM salariatiWHERE UPPER(nume) ='ENE' AND UPPER(pren) ='DAN' );
SELECT nume, salariu
FROM salariatiWHERE cod_manager = (SELECT cod_ang FROM salariati
WHERE UPPER(nume) ='ENE' AND UPPER(pren) ='DA
b.
c.
d.
76. Care este comanda corecta care afiseaza numele cititorilor care au carti nerestituite?
a. SELECT nume_cititor
FROM imprumutaWHERE data_restituirii = NULL;
SELECT nume_cititorFROM imprumutaWHERE data_restituirii IS NOT NULL;
SELECT nume_cititorFROM imprumutaWHERE data_restituirii IS NULL;SELECT nume_cititorFROM imprumuta
WHERE data_restituirii > SYSDATE;
b.
c.
d.
77. Care este comanda corecta care sterge valoarea coloanei salariu pentru angajatii care sunt angajati cu contract
de colaborare?
a. DELETE salariuFROM salariati
WHERE contract=colaborare;
b. UPDATE salariati
-
8/7/2019 Toate Intr-un Fisier 2011
22/595
SET salariu IS nullWHERE contract=colaborare;
c. DROP salariu
FROM salariatiWHERE contract=colaborare;
d. UPDATE salariati
SET salariu=nullWHERE contract=colaborare;
78. Care este comanda corecta care afiseaza codul departamentelor, numele departamentelor si suma salariilo
pentru fiecare departament?
a. SELECT cod_departament, nume_departament, SUM(salariu)FROM salariati s, departamente d
GROUP BY cod_departament, nume_departament;
SELECT cod_departament, nume_departament, SUM(salariu)
FROM salariati s, departamente dWHERE s.cod_departament=d.cod_departament
GROUP BY cod_departament;
SELECT cod_departament, nume_departament,
SUM(salariu) FROM salariati s, departamente dWHERE s.cod_departament=d.cod_departament
GROUP BY cod_departament, nume_departament;SELECT cod_departament, nume_departament, SUM(salariu)
FROM salariati, departamenteWHERE s.cod_departament=d.cod_departamentGROUP BY cod_departament, nume_departament;
b.
c.
d.
79. Care este comanda corecta care afiseaza numele salariatilor care castiga mai mul
mediu pea. SELECT nume
FROM salariati
WHERE salariu >AVG(salariu);
SELECT numeFROM salariatiWHERE salariu > (SELECT AVG(salariu) FROMsalariati) ORDER BY salariu;SELECT numeFROM salariatiWHERE salariu > (SELECT AVG(salariu) FROM salariati
ORDER BY salariu);SELECT nume
FROM salariati
WHERE salariu > (SELECT AVG(salariu) FROM salariati)
ORDER BY 1;
b.
c.
d.
80. Care este comanda corecta care afiseaza toate functiile pe care nu lucreaza angajati?
a. SELECT cod_functieFROM 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
-
8/7/2019 Toate Intr-un Fisier 2011
23/595
(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 functiiWHERE cod_functie NOT IN(SELECT cod_functie FROM salariati WHERE cod_functie IS NOT
-
8/7/2019 Toate Intr-un Fisier 2011
24/595
Baze de Date 2010 _ Intrebri orientative
MULTIPLE CHOICE
1. Normalizarea rezolva
a. Anomaliile de stergere, de actualizare si de creareb. Anomalia de actualizare, de stergere, si de crearec. Anomalia de inserare, de actualizare si de creared. Anomaliile de stergere, de actualizare si de inserare
2. O cheie primara
a. Poate fi compusa numai dintr-un singur atributb. Poate fi compusa din mai multe atributec. Poate fi compusa dintr-un singur atribut care are si valori NULLd. Poate fi compusa din zero, unul sau mai multe atribute
3. Prima forma normala rezolva anomaliile cauzate dea. Grupurile repetitive si atributele multivaloareb. Dependentele partiale de cheia primarac. Dependentele tranzitived. Relatiile de tip unu-la-mai-multi
4. A doua forma normala rezolva anomaliile cauzate de
a. Grupurile repetitiveb. Dependentele partiale de cheia primarac. Grupurile repetitive si atributele multivaloared. Dependentele tranzitive
5. A treia forma normala rezolva anomaliile cauzate de
a. Dependentele partiale de cheia primarab. Grupurile repetitivec. Dependentele tranzitived. Atributele multivaloare
6. Relatia m:n devine in modelul relational
a. tabel asociativ cu cheia primara formata numai din doua chei externe pentru cele douatabele asociate
b. tabel asociativ cu cheia primara formata din doua chei externe pentru cele doua tabeleasociate plus eventuale coloane aditionale
c. chei externed. entitate independenta
7. Limbajul de definire a datelor (DDL - Data Definition Language) nu include urmatoarea instructiune
a. INSERTb. CREATEc. ALTERd. DROP
-
8/7/2019 Toate Intr-un Fisier 2011
25/595
8. Limbajul de manipulare a datelor (DML Data Manipulation Language) nu include instructiuneaa. INSERTb. UPDATEc. DELETEd. DROP
9. Sintaxa corecta pentru o restrictie NOT NULL este
a. nume_coloana REFERENCES NOT NULLb. nume_coloana tip_de_date IS NOT NULLc. nume_coloana tip_de_date NOT NULLd. DEFAULT [NULL | NOT NULL]
10. Utilizarile valide ale instructiunii ALTER TABLE nu includ
a. Adaugarea coloanelorb. Eliminarea unei chei primarec. Redenumirea unui tabeld. Adaugarea unei restrictii
11. Operatorul UNION
a. Include randurile duplicate in setul de rezultateb. Combina seturile de rezultate a doua interogari intr-un singur set de rezultate si elimina
randurile duplicate din setul de rezultatec. Combina doua interogari intr-o singura interogare de tip joind. 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 NULLREFERENCES 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),
-
8/7/2019 Toate Intr-un Fisier 2011
26/595
FOREIGN KEY (coddom) REFERENCES DOMENIU (coddom));
13. Sa se creeze tabelul asociativimprumuta, 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 CARTEPRIMARY 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 CARTEWHERE coddom = I;
c. CREATE TABLE CARTE_INFO
-
8/7/2019 Toate Intr-un Fisier 2011
27/595
AS SELECT codc, titlu, autorFROM CARTEWHERE 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 KEYdata_imprumut;
b. ALTER TABLE IMPRUMUTAADD PRIMARY KEY cod_cititor, cod_carte, data_imprumut;
c. ALTER TABLE IMPRUMUTAADD CONSTRAINT cp PRIMARY KEY (cod_cititor, cod_carte, data_imprumut);
d. ALTER TABLE IMPRUMUTAADD CONSTRAINT PRIMARY KEY (cod_cititor, cod_carte, data_imprumut);
16. Sa se insereze in tabelul CARTE toate cartile din tabelul CARTE_INFO,presupunand ca tabelulCARTE_INFO a fost deja creat.
a. CREATE TABLE CARTEAS SELECT codc, titlu, autorFROM CARTE_INFO;
b. INSERT INTO CARTESELECTFROM CARTE_INFO;
c. CREATE TABLE CARTEAS SELECT *FROM CARTE_INFO;
d. INSERT INTO CARTESELECT *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 decatmedia numarului de exemplare pe biblioteca. Noua valoare a pretului sa fie egala cu suma preturilorcartilor scrise de BARBU.a. UPDATE CARTE
SET pret = (SELECT SUM(pret)FROM CARTEWHERE autor = BARBU)
WHERE nrex < (SELECT AVG(nrex)FROM CARTE);
b. MODIFY CARTESET pret = (SELECT SUM(pret)
-
8/7/2019 Toate Intr-un Fisier 2011
28/595
FROM carteWHERE autor = BARBU)
WHERE nrex < (SELECT AVG(nrex)FROM CARTE);
c. UPDATE CARTEpret = ( SUM(pret)
FROM carteWHERE autor = BARBU)
WHERE nrex < ( AVG(nrex) FROM CARTE);d. UPDATE CARTE
pret = (SELECT SUM(pret)FROM carteWHERE autor = BARBU andnrex < ( 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 carteziand. 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 FROMb. Poate fi scrisa in Oracle SQL folosind un simbol (+) in clauza WHEREc. Returneaza toate randurile din unul sau din ambele tabeled. 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 codcFROM IMPRUMUTAWHERE dataef IS NULLGROUP BY codc;
b. SELECT COUNT(*)FROM IMPRUMUTAGROUP BY codc;
c. SELECT codc, COUNT(*)FROM IMPRUMUTAWHERE dataef IS NULLGROUP BY codc;
d. SELECT COUNT(*)
FROM IMPRUMUTAWHERE dataef =0GROUP 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 imprumutaGROUP BY codcarteHAVING COUNT(codcarte)>1;
b. SELECT COUNT(codcarte)FROM imprumuta
-
8/7/2019 Toate Intr-un Fisier 2011
29/595
GROUP BY codcarteHAVING COUNT(codcarte)>1;
c. SELECT COUNT(COUNT(codcarte))FROM imprumutaWHERE COUNT(codcarte)>1;
d. SELECT COUNT(codcarte)
FROM imprumutaORDER BY codcarteHAVING 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 CARTEGROUP BY codcarte;
b. SELECT coddomeniu, AVG(pret), SUM(nrex)FROM CARTE
GROUP BY codcarte;c. SELECT coddomeniu, COUNT(*), AVG(pret), SUM(nrex)FROM CARTEGROUP BY coddomeniu;
d. SELECT COUNT(*), AVG(pret), SUM(nrex)FROM CARTEORDER 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 profesorilorsai?a. INSERT TO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)FROM PROFORDER BY COD_FAC;
b. INSERT INTO TOTALURISELECT COD_FAC, COUNT(*) , SUM(SALARIU)FROM PROF ;
c. INSERT INTO TOTALURISELECT COD_FAC, COUNT(*) , SUM(SALARIU)FROM PROFGROUP BY COD_FAC;
d. INSERT INTO TOTALURISELECT COD_FAC, SUM(COD_PROF), SUM(SALARIU)
FROM PROFGROUP 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, yWHERE x.pret < y.pretAND y.titlu = Baze de dateAND y.autor = Popescu;
b. SELECT x.titlu, x.pret
-
8/7/2019 Toate Intr-un Fisier 2011
30/595
FROM carte x, carte yWHERE x.pret > y.pretAND y.titlu = Baze de dateAND y.autor = Popescu;
c. SELECT x.titlu, x.pretFROM carte x, carte y
WHERE x.pret > y.pretAND titlu = Baze de dateAND autor = Popescu;
d. SELECT x.titlu, x.pretFROM carte x, carte yWHERE x.pret > y.pretAND 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.prenFROM PROFESORI AWHERE a.codp IN (SELECT DISTINCT codpFROM COPII);
b. SELECT a.nume, a.prenFROM PROFESORI AWHERE a.codp IN DISTINCT codpFROM COPII;
c. SELECT a.nume, a.prenFROM PROFESORI AWHERE 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 AWHERE a.codp IS NOT (SELECT DISTINCT codp FROM COPII);
b. SELECT a.nume, a.prenFROM PROFESORI AWHERE a.codp NOT IN (SELECT DISTINCT codp FROM COPII);
c. SELECT a.nume, a.pren
FROM PROFESORI AWHERE 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 seriasfreprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni pe careil are un actionar).Care este secventa corecta care afiseaza pentru un actionar (introdus de la tastatura), intervaleleseriilor actiunilor sale?a. SELECT a.seriain, a.seriasf, b.nume
-
8/7/2019 Toate Intr-un Fisier 2011
31/595
FROM actiuni a, actionari bWHERE a.cod_act=b.cod_act AND b.nume=&x;
b. SELECT a.seriain, a.seriasf, b.numeFROM actiuni , actionariWHERE a.cod_act=b.cod_act AND nume=&x;
c. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni a, actionari bWHERE a.cod_act=b.cod_act ;
d. SELECT a.seriain, a.seriasf, b.numeFROM actiuni a, actionari bWHERE 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 seriasfreprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni pe careil 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 cumuleazamai multe functii, in diferite compartimente?a. SELECT COUNT(SALARIU) AS SALARIU_CUMULAT
FROM salariat, are_functiaWHERE s.cod_salariat=a.cod_salariatAND NUME='ENE' AND PREN='ANA;
b. SELECT Sum(SALARIU) AS SALARIU_CUMULATFROM salariat, are_functiaWHERE NUME='ENE' , PREN='ANA;
c. SELECT Sum(SALARIU) AS SALARIU_CUMULAT
FROM salariat s, are_functia aWHERE s.cod_salariat=a.cod_salariatAND 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 salariatiWHERE salariu IN (SELECT salariu FROM salariati , department dWHERE s.cod_depart = d.cod_depart AND nume_depart Contractari)AND cod_depart= (SELECT cod_depart FROM department
-
8/7/2019 Toate Intr-un Fisier 2011
32/595
WHERE nume_depart = Contractari);b. SELECT nume, salariu, cod_depart
FROM salariatiWHERE salariu IS IN (SELECT salariu FROM salariati , departmentWHERE 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 salariatiWHERE (salariu) IN (SELECT salariu FROM salariati s, department dWHERE s.cod_depart = d.cod_depart AND nume_depart = Contractari)AND cod_depart (SELECT cod_depart FROM departmentWHERE 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 imprumutaWHERE data_restituirii NOT NULLGROUP BY cod_cititor;
b. SELECT cod_cititor, COUNT(*)FROM imprumutaWHERE data_restituirii IS NOT NULL;
c. SELECT cod_cititor, COUNT(*)FROM imprumutaGROUP BY cod_cititor;
d. SELECT cod_cititor, COUNT(*)FROM imprumutaWHERE data_restituirii IS NOT NULL
GROUP BY cod_cititor;
33. Care este comanda corecta care afiseaza numele salariatilor care castiga mai mult decat salariul mediupe companie, in ordine crescatoare a salariului?a. SELECT nume
FROM salariatiWHERE salariu >AVG(salariu);
b. SELECT numeFROM salariatiWHERE salariu > (SELECT AVG(salariu) FROM salariati)ORDER BY salariu;
c. SELECT nume
FROM salariatiWHERE salariu > (SELECT AVG(salariu) FROM salariatiORDER BY salariu);
d. SELECT numeFROM salariatiWHERE 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
-
8/7/2019 Toate Intr-un Fisier 2011
33/595
FROM salariatWHERE nume LIKE '__a$';
b. SELECT numeFROM salariatWHERE nume LIKE '%a%';
c. SELECT nume
FROM salariatWHERE 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 salariatGROUP BY cod_departament;
c. SELECT cod_departament, COUNT(*)FROM salariatGROUP BY cod_departament;
d. SELECT cod_departament, COUNT()FROM salariatGROUP BY cod_departament;
38. Care este comanda corecta care afiseaza codul departamentelor pentru care salariul minim depaseste
5000?a. SELECT cod_departament
FROM salariatWHERE MIN(salariu)>5000GROUP BY cod_departament;
b. SELECT cod_departamentFROM salariatGROUP BY cod_departament
-
8/7/2019 Toate Intr-un Fisier 2011
34/595
HAVING MIN(salariu)>5000;c. SELECT cod_departament
FROM salariatGROUP BY cod_departamentMIN(salariu)>5000;
39. Care este comanda corecta care afiseza:
- codurile departamentelor in care lucreaza cel putin un angajat, iar pentru fiecaredintre acestea si pentru fiecare manager care lucreaza in departamentul respectiv numarulde 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 salariatiGROUP BY CUBE (cod_depart, cod_manager);
b. SELECT cod_depart, cod_manager, COUNT(cod_angajat)
FROM salariatiGROUP BY cod_depart, cod_manager;c. SELECT cod_depart, cod_manager, COUNT(cod_angajat)
FROM salariatiGROUP 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 dintreacestea si pentru fiecare manager care lucreaza in departamentul respectiv numarul desalariati;
- numarul de salariati pentru fiecare departament indiferent de manager;- numarul total de angajati din companie?a. SELECT cod_depart, cod_manager, COUNT(*)
FROM salariatiGROUP BY CUBE (cod_depart, cod_manager);
b. SELECT cod_depart, cod_manager, COUNT(*)FROM salariatiGROUP BY cod_depart, cod_manager;
c. SELECT cod_depart, cod_manager, COUNT(*)FROM salariatiGROUP 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 imprumutaWHERE TO_CHAR(data_imprumutului,yyyy)=2009;
b. SELECT COUNT(*)FROM imprumutaWHERE TO_CHAR(data_imprumutului,yyyy)=2009;
c. SELECT COUNT(*)FROM imprumutaWHERE data_imprumutului=2009;
d. SELECT COUNT(*)FROM imprumutaWHERE TO_CHAR(data_imprumutului,yy)=2009;
-
8/7/2019 Toate Intr-un Fisier 2011
35/595
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 salariatiWHERE nume ='Ionescu' AND prenume ='Mihai' );b. SELECT nume, salariu
FROM salariatiWHERE cod_sef = (SELECT cod_angajat FROM salariati
WHERE nume ='Ionescu', prenume ='Mihai' );c. SELECT nume, salariu
FROM salariatiWHERE cod_sef = Ionescu Mihai';
d. SELECT nume, salariuFROM salariatiWHERE 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 carelucreaza, inclusiv departamentele in care nu lucreaza salariati?a. SELECT nume_salariat, nume_departament
FROM salariati s, departamente dWHERE s.cod_departament = d.cod_departament;
b. SELECT nume_salariat, nume_departamentFROM salariati s, departamente dWHERE s.cod_departament(+) = d.cod_departament;
c. SELECT nume_salariat, nume_departamentFROM salariati s, departamente d
WHERE s.cod_departament = d.cod_departament(+);d. SELECT nume_salariat, nume_departament
FROM salariati s, departamente dWHERE 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 fWHERE cod_functie=cod_functieAND cod_departament= 30;
b. SELECT DISTINCT nume_functieFROM salariati s, functii fWHERE s.cod_functie=f.cod_functieAND cod_departament= 30;
c. SELECT DISTINCT nume_functieFROM salariati, functiiWHERE s.cod_functie=f.cod_functieAND cod_departament= 30;
d. SELECT nume_functieFROM salariati s, functii fWHERE s.cod_functie=f.cod_functieAND cod_departament= 30;
-
8/7/2019 Toate Intr-un Fisier 2011
36/595
45. Care este comanda corecta care afiseaza toate functiile pe care nu lucreaza angajati?
a. SELECT cod_functieFROM functiiWHERE cod_functie IN
(SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL);b. SELECT cod_functieFROM functiiWHERE cod_functie NOT IN(SELECT cod_functie FROM salariati WHERE cod_functie IS NULL);
c. SELECT cod_functieFROM functiiWHERE cod_functie NOT IN(SELECT cod_functie FROM salariati);
d. SELECT cod_functieFROM functiiWHERE 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 operaUNION ALLSELECT null, cod_artist, numeFROM artist;
b. SELECT cod_opera, cod_artist, TO_CHAR(null) numeFROM operaUNION
SELECT TO_NUMBER(null), cod_artist, numeFROM artist;
c. SELECT cod_opera, cod_artist, numeFROM operaUNIONSELECT cod_artist, numeFROM 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 < 20MINUSSELECT codcarte FROM imprumutaGROUP BY codcarteHAVING COUNT(*) > 3;
b. SELECT codcarte FROM carteWHERE nrex < 20INTERSECTSELECT codcarte FROM imprumutaGROUP BY codcarteHAVING COUNT(*) > 3;
c. SELECT codcarte FROM carte
-
8/7/2019 Toate Intr-un Fisier 2011
37/595
WHERE nrex < 20UNIONSELECT codcarte FROM imprumutaGROUP BY codcarteHAVING 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, adresaFROM opera o, galerie g, artist aWHERE 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, artistWHERE opera.cod_artist = artist.cod_artistAND o.cod_galerie = g.cod_galerie;
c. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume,g.cod_galerie, nume_galerie, adresaFROM opera o, galerie g, artist aWHERE o.cod_artist = a.cod_artistAND 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 artistWHERE cod_galerie IN (20, 40);
b. SELECT titlu, nume, prenumeFROM opera NATURAL JOIN artistWHERE cod_galerie IN (20, 40);
c. SELECT titlu, nume, prenumeFROM opera NATURAL JOIN artist USING cod_artistWHERE cod_galerie IN (20, 40);
d. SELECT titlu, nume, prenumeFROM 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, titluFROM opera oRIGHT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
b. SELECT nume, prenume, titluFROM opera oLEFT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
c. SELECT nume, prenume, titluFROM opera o, artistWHERE o.cod_artist = a.cod_artist(+);
d. SELECT nume, prenume, titluFROM opera oFULL OUTER JOIN artist a ON o.cod_artist = a.cod_artist;
-
8/7/2019 Toate Intr-un Fisier 2011
38/595
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 titlurileoperelor al caror autor este necunoscut.a. SELECT nume, prenume, titlu
FROM opera oRIGHT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);b. SELECT nume, prenume, titlu
FROM opera o, artist aWHERE o.cod_artist(+) = a.cod_artist(+);
c. SELECT nume, prenume, titluFROM opera oFULL OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
d. SELECT nume, prenume, titluFROM opera oLEFT 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 artistulcaruia i apartine opera avnd codul 200 si care se afla expuse n aceeasi galerie cu operele al caror codeste 100 sau 110? Se presupune ca o opera are un singur autor.a. SELECT titlu, cod_artist, valoare
FROM operaWHERE 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 operaWHERE 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 operaWHERE 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 operaWHERE valoare IN (SELECT MIN(valoare)FROM operaGROUP BY cod_artist);
b. SELECT titlu, cod_artist, valoareFROM operaWHERE valoare = (SELECT MIN(valoare)FROM opera);
c. SELECT titlu, cod_artist, valoareFROM opera
-
8/7/2019 Toate Intr-un Fisier 2011
39/595
WHERE valoare = (SELECT MIN(valoare)FROM operaORDER 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 aWHERE 3
-
8/7/2019 Toate Intr-un Fisier 2011
40/595
a. SELECT cod_galerie, cod_artist, SUM(valoare)FROM operaGROUP BY cod_galerie, cod_artist;
b. SELECT cod_galerie, cod_artist, SUM(valoare)FROM operaGROUP BY ROLLUP(cod_galerie, cod_artist);
c. SELECT cod_galerie, cod_artist, SUM(valoare)FROM operaGROUP 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 < 50GROUP 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 < 50GROUP 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 vizualizareCREATE VIEW v_angajatiASSELECT cod_ang, nume, prenume, salariu, data_angajariiFROM angajatiWITH 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 + 500WHERE cod_angajat = 10;
60. Se da urmatoarea vizualizare
CREATE VIEW v_angajatiASSELECT cod_ang, nume, prenume, salariu, cod_departament
-
8/7/2019 Toate Intr-un Fisier 2011
41/595
FROM angajatiWHERE cod_departament = 30WITH CHECK OPTION;Care dintre urmatoarele comenzi este corecta?a. INSERT INTO v_angajati
VALUES (10, Ion, Daniel, 1000, 505);
b. SELECT *FROM v_angajatiWHERE salariu > 505;
c. UPDATE v_angajatiSET cod_departament= 505WHERE cod_departament = 30;
61. Care este comanda corecta care obtine numele primilor trei angajati care au cele mai mari salarii?
a. SELECT numeFROM angajati aWHERE 3>(SELECT COUNT(*)
FROM angajatiWHERE salariu > a.salariu);b. SELECT nume
FROM angajati aWHERE COUNT(*) >(SELECT 3
FROM angajatiWHERE salariu > a.salariu);
c. SELECT numeFROM angajatiWHERE 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 sWHERE salariu =(SELECT MIN(salariu)
FROM angajati );b. SELECT nume
FROM salariatiWHERE salariu =(SELECT salariu
FROM salariatiWHERE salariu = MIN(salariu));
c. SELECT nume
FROM salariati sWHERE salariu =(SELECT MIN(salariu)
FROM angajatiWHERE 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 carteWHERE cod_carte IN
(SELECT DISTINCT cod_carte
-
8/7/2019 Toate Intr-un Fisier 2011
42/595
FROM imprumutaWHERE dataef IS NULL);
b. SELECT titluFROM carteWHERE cod_carte NOT IN
(SELECT DISTINCT cod_carte
FROM imprumutaWHERE dataef IS NULL);
c. SELECT titluFROM carteWHERE cod_carte IN
(SELECT DISTINCT cod_carteFROM imprumutaWHERE 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, titluFROM cititor, carte, imprumutaWHERE imprumuta.cod_carte= carte.cod_carteAND TO_CHAR(data_imprumut,yyyy) = 2008;
b. SELECT nume, titluFROM cititor, carte, imprumutaWHERE imprumuta.cod_carte= carte.cod_carteAND imprumuta.cod_cititor= cititor.cod_cititorAND TO_CHAR(data_imprumut,yyyy) = 2008;
c. SELECT nume, titluFROM cititor, carte, imprumutaWHERE imprumuta.cod_carte= carte.cod_carte
AND imprumuta.cod_cititor= cititor.cod_cititorAND 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 angajatiGROUP BY cod_jobHAVING AVG(salariu)=(SELECT MIN(salariu)
FROM angajatiGROUP BY cod_job);
b. SELECT cod_job, AVG(salariu)FROM angajati
GROUP BY cod_jobHAVING AVG(salariu)=(SELECT MIN(AVG(salariu))
FROM angajatiGROUP BY cod_job);
c. SELECT cod_job, AVG(salariu)FROM angajatiGROUP BY cod_jobHAVING MIN(salariu)=(SELECT AVG(MIN(salariu))
FROM angajatiGROUP BY cod_job);
-
8/7/2019 Toate Intr-un Fisier 2011
43/595
SGBD 2010
1. Care este varianta corecta pentru declararea urmatoarelor variabile?
a. v_valoare NUMBER(15) NOT NULL := 0;
v_data_achizitie DATE DEFAULT SYSDATE;
c_valoare CONSTANT NUMBER:=1000;
v_cod_oper opere%TYPE;
b. v_valoare NUMBER(15) NOT NULL;v_data_achizitie DATE DEFAULT SYSDATE;
c_valoare CONSTANT NUMBER;
v_cod opera opere.cod_opera%TYPE;
c v_valoare NUMBER(15) NOT NULL := 0;
v_data_achizitie DATE DEFAULT SYSDATE;
c_valoare CONSTANT NUMBER:= 1000;
v_ cod_opera opere.cod_opera%TYPE;
2. Care din urmatoarele declaratii de valabilitate este corecta?
a. v_id_student NUMBER(5);
v_nume_student VARCHAR2(35) NOT NUL:=Ionescu;
v_prenume_student CHAR(20);
v_data DATE DEFAULT SYSDA
b. v_id_student NUMBER(5);
v_nume_student VARCHAR2(35) NOT NUL:=Ionescu;
v_prenume_student studenti.prenume%TYPE;
v_data DATE:=SYSDATE+1;
c. v_id_student NUMBER(2):=150;
v_nume_student studenti.nume%ROWTYPE:=Ionescu;
v_prenume_student CHAR(20);v_data DATE:=SYSDATE+1;
3. Se da urmatorul bloc PL/SQL:
DECLARE
carte VARCHAR2(20);
autor VARCHAR(15) DEFAULT 'Eminescu' ;
BEGIN
DBMS_OUTPUT.PUT_LINE(carte||' '||autor);
END;
Care din urmatoarele afirmatii este corecta?
a. Se va returna o eroare, deoarece variabila carte este utilizata nefiind initializata.
b. Se va returna o eroare, deoarece nu se poate utiliza clauza DEFAULT pentru a initializa o
variabila de tip VARCHAR2.
c. Blocul se executa fara erori si afiseaza 'null Eminescu'.
d. Blocul se executa fara erori si afiseaza 'Eminescu'
%TYPE trebuie aplicata pevariabila, coloana, camp sauatribut nu pe opere
A fost intalnit simbolul operecand era asteptata una dinurmatoarele
Identificatorul Ionescutrebuia declarat
Cu indicatorul %ROWTYPE
numiti tabela, cursor sau unindicativ cursor
-
8/7/2019 Toate Intr-un Fisier 2011
44/595
4. Se da urmatorul bloc PL/SQL:
DECLARE
nume VARCHAR2(15);
v_nr INTEGER;
BEGIN
SELECT LENGTH(nume) INTO v_nrFROM dual;
DBMS_OUTPUT.PUT_LINE('Sirul are '||v_nr||'caractere');
END;
Care din urmatoarele afirmatii este adevarata?
a. Va fi generata o eroare deoarece variabila nume este utilizata nefiind initializata.
b. Blocul se executa fara erori si afisaza 'Sirul are caractere').
c. Blocul se executa fara erori si afisaza 'Sirul are 0 caractere').
d. Va fi generata o eroare deoarece variabila v_nr este utilizata nefiind initializata
5. Se da urmatorul bloc PL/SQL
DECLARE
v_salariu NUMBER(8):=&p_salariu;
v_bonus NUMBER(8);
v_salariu_anual NUMBER(8);
BEGIN
v_salariu_anual:=v_salariu*12;
IF v_salariu_anual>=20000
THEN v_bonus:=0.01 * v_salariu_anual;ELSIF v_salariu_anual >10000 AND v_salariu_anual
-
8/7/2019 Toate Intr-un Fisier 2011
45/595
6. Se da urmatorul bloc PL/SQL:
BEGIN
SELECT nume_job
INTO :rezultat
FROM angajat a, joburi b
WHERE a.id_job=b.id_job
AND id_angajat=100;
DBMS_OUTPUT_LINE('Numele jobului este'|| :rezultat);
END;
Care din urmatoarele afirmatii este adevarata?
a. Blocul se executa fara erori si afisaza numele jobului angajatului avand codul 100.
b. Executia blocului se incheie cu o eroare, deoarece variabila de legatura rezultat nu este
declarata in afara blocului PL/SQL.
c. Executia blocului se incheie cu o eroare, deoarece utilizarea clauzei INTO a comenzii
SELECT nu este corecta.
d. Valoarea variabilei de legatura rezultat nu poate fi afisata decat din interiorul blocului
PL/SQL.
7. Se da urmatorul bloc PL/SQL:
DECLARE
v_cod_sal angajati.id_angajat%TYPE:= 100;
v_cod_dept angajati.id_departament%TYPE:= 10;
v_procent NUMBER(8):=20;
BEGIN
UPDATE angajati
SET id_departament = v_cod_dept,
salariu=salariu + (salariu* v_procent/100)
WHERE id_angajat = v_cod_sal;IF SQL%ROWCOUNT = 0 THEN
DBMS_OUTPUT.PUT_LINE (Nu exista un angajat cu acest cod);
ELSE
COMMIT;
DBMS_OUTPUT.PUT_LINE (Actualizare realizata);
END IF;
END;
Care dintre urmatoarele afirmatii este adevarata?
a. Executia blocului se incheie cu o eroare, deoarece comanda clauza SET a comenzii UPDATE
este utilizata gresit.
b. Executia blocului se incheie cu o eroare, deoarece comanda COMMIT nu poate fi utilizata
intr-un bloc PL/SQL.
c. Executia blocului se incheie cu o eroare, deoarece metoda ROWCOUNT este utilizata pentru
un cursor nedeclarat.
d. Blocul se va executa fara erori si afiseaza mesajul Nu exista un angajat cu acest cod daca
angajatul avand codul 100 nu exista in tabelul angajati sau mesajul Actualizare realizata in
caz contrar.
-
8/7/2019 Toate Intr-un Fisier 2011
46/595
8. Variabila g_mesaj declarata ca mai jos este:
VARIABLE g_mesaj VARCHAR2 (50)
BEGIN
:g_mesaj := Invat PL/SQL;
END;
a. Variabila de substitutie.
b. De tip record.
c. Variabila de legatura.d. De tip varray.
9. Care este varianta corecta pentru afisarea variabilei v_mesaj ?
a. VARIABLE v_mesaj VARCHAR2 (50)
BEGIN
:v_mesaj := Invat PL/SQL;
PRINT v_mesaj;
END;
/ b. VARIABLE v_mesaj VARCHAR2 (30)
BEGIN
:v_mesaj := Invat PL/SQL;
END;
/
c. VARIABLE v_mesaj VARCHAR2 (50)
BEGIN
:v_mesaj := Invat PL/SQL;
DBMS_OUTPUT.PUT_LINE ( v_mesaj);
END;/
10. Blocul urmator afiseaza:
DECLARE
v_x NUMBER(9,2):=10;
v_y NUMBER(9,2);
v_message VARCHAR2(20);
BEGIN
v_y:= NULL;
IF v_x !=v_y THENv_message := NOT EQUAL;
ELSE v_message := EQUAL;
END IF;
DBMS_OUTPUT.PUT_LINE(v_message);
END;
a. NOT EQUAL
b. EROARE
c. EQUAL
d. NIMIC
A fost intalnit simbolul v_mesaj cand eraasteptat := etc
Identificatorul v_mesaj trebuia declarat
-
8/7/2019 Toate Intr-un Fisier 2011
47/595
11. Pentru ca urmatorul bloc PL/SQL sa fie corect trebuie adaugat la linia 8 urmatorul cod:
SQL > DECLARE
2 TYPE ang_record_type IS RECORD (
3 nume VARCHAR2(20),4 departament NUMBER);
5 ang_record ang_record_type;
6 BEGIN
7 SELECT nume, id_departament
8
9 FROM angajati WHERE id_angajat = 100;
11 DBMS_OUTPUT.PUT_LINE (Nume || ang_record.nume || Departament ||
13 ang_record.departament);
14 END;
a. INTO ang_record_type%typeb. INTO ang_record_type%rowtype
c. INTO ang_record_type
d. INTO ang_record
12. Pentru ca urmatorul bloc PL/SQL sa fie corect si sa afiseze codul, salariatul si jobul angajatului cu
codul 100, trebuie adaugat la linia 10 urmatorul cod:
SQL> DECLARE
2 TYPE type_ang IS RECORD (
3 ang_cod angajati.id_angajat%TYPE,4 sal angajati.salariu%TYPE,
5 job angajati.id_job%TYPE);
6 v_ang type_ang;
7 BEGIN
8 DELETE FROM angajati
9 WHERE id_angajat=100
10
11 INTO v_ang;
12 DBMS_OUTPUT.PUT_LINE ( Angajatul cu codul :|| v_ang.ang_cod ||
13 si jobul || v_ang.job || are salariul || v_ang.sal);
14 END;
a. RETURNING angajati%rowtype
b. RETURNING id_angajat, RETURNING salariu, RETURNING id_job
c. RETURNING id_angajat, salariu, id_job
d. RETURNING v_ang
-
8/7/2019 Toate Intr-un Fisier 2011
48/595
13. Pentru ca urmatorul bloc PL/SQL sa fie corect trebuie adaugat la linia 6 urmatorul cod:
1DECLARE2TYPE typetablou IS TABLE OF NUMBER;3tablou typetablou:= typetablou();4BEGIN5FOR i IN 1..10 LOOP67 tablou(i) :=i;8END LOOP;9END;
a. tablou.EXTEND;
b. tablou:= typetablou();
c. tablou(i):= typetablou();
d. tablou(i).NEXT;
14. Care dintre urmatoarele blocuri se executa cu erori?
a. declare
alfa interval year to month;
begin
alfa :=interval 2 - 5 year to month;
DBMS_OUTPUT.PUT_LINE(alfa = || alfa);
end;
b. declare
alfa interval year to month;
beginalfa :=interval 8 month;
DBMS_OUTPUT.PUT_LINE(alfa = || alfa);
end;
c. declare
alfa interval year to month;
begin
alfa := 20 - 10;
DBMS_OUTPUT.PUT_LINE(alfa = || alfa);
end;
d. declare
alfa interval month;begin
alfa :=interval 8 month;
DBMS_OUTPUT.PUT_LINE(alfa = || alfa);
end;
A fost intalnit simbolul monthcand era asteptat := etc
-
8/7/2019 Toate Intr-un Fisier 2011
49/595
15. Ce comanda SQL*Plus ar putea sa preceada blocul de mai jos pentru ca in acesta sa se utilizeze
valoarea data variabilei sem?
DECLARE
v_sem CHAR(2):=UPPER(&sem);
BEGIN
CASE v_sem
WHEN I THEN DBMS_OUTPUT.PUT_LINE(SEMESTRUL I);
WHEN II THEN DBMS_OUTPUT.PUT_LINE(SEMESTRUL II);
ELSE DBMS_OUTPUT.PUT_LINE(este o eroare!);END CASE;
END;
a. ACCEPT sem PROMPT sem=
b. VARIABLE sem=li
c. DEFINE sem
d. TYPE SEM=i
16. Sa se introduca in tabelultestare(cod NUMBER(2)) 5 inregistrari, avand codurile egale cu 1, 2, 3, 4
respectiv 5. Care din urmatoarele variante nu executa acest deziderat?
a. DECLARE
v_contor NUMBER(2) := 1;
BEGIN
LOOP
INSERT INTO testare VALUES (v_contor);
v_contor :=v_contor + 1;
EXIT WHEN v_contor > 5;
END LOOP;
END;
b. DECLAREv_contor NUMBER(2) := 1;
BEGIN
WHILE v_contor < 6 LOOP
INSERT INTO testare VALUES (v_contor);
v_contor :=v_contor + 1;
END LOOP;
END;
c. DECLARE
v_contor NUMBER(2) := 1;
BEGIN
FOR i IN 15 LOOPINSERT INTO testare VALUES (v_contor);
END LOOP;
END;
d. BEGIN
FOR i IN 15 LOOP
INSERT INTO testare VALUES (i);
END LOOP;
END;
Introduce valorea 1 de 5 ori
-
8/7/2019 Toate Intr-un Fisier 2011
50/595
17. Se da urmatorul bloc PL/SQL
DECLARE
TYPE tabimb IS TABLE OF VARCHAR2(50);
tab1 tabimb;
tab2 tabimb:= tabimb ();
BEGIN
IF tab1 IS NULL THEN
DBMS_OUTPUT.PUT_LINE(tab1 este NULL);
ELSE
DBMS_OUTPUT.PUT_LINE(tab1 este NOT NULL);END IF;
IF tab2 IS NULL THEN
DBMS_OUTPUT.PUT_LINE(tab2 este NULL);
ELSE
DBMS_OUTPUT.PUT_LINE(tab2 este NOT NULL);
END IF;
END;
In urma executiei acestui bloc se obtine urmatorul rezultat:
a. tab1 este NOT NULL
tab2 este NOT NULLb. tab1 este NULL
tab2 este NOT NULL
c. EROARE
d. tab1 este NULL
tab2 este NULL
18. Se da urmatorul bloc PL/SQL
DECLARE
TYPE tablou_numar IS TABLE OF NUMBERINDEX BY PLS_INTEGER;
v_tablou tablou_numar;
BEGIN
FOR i IN 1...10 LOOP
v_tablour(i) := i*i*i;
END LOOP;
FOR i IN v_tablou.FIRST..v_tablou.LAST LOOP
v_tablour(i) := NULL;
END LOOP;
DBMS_OUTPUT.PUT_LINE(tabloul are || v_tablou.COUNT || elemente);
v_tablou.delete;DBMS_OUTPUT.PUT_LINE(tabloul are || v_tablou.COUNT || elemente);
END;In urma executiei blocului se obtine urmatorul rezultat:
a. tabloul are 10 elemente
tabloul are 10 elemente
b. Eroare
c. tabloul are 10 elemente
tabloul are 0 elemente
d. tabloul are 0 elemente
tabloul are 0 elemente
-
8/7/2019 Toate Intr-un Fisier 2011
51/595
19. Care este varianta corecta pentru a defini un tablou imbricat de numere care are ca elemente
primele 10 numere naturale?
a. DECLARE
TYPE tablou IS TABLE OF NUMBER;
tab tablou:= tablou();
BEGIN
FOR i IN 110 LOOP
tab.NEXT(i)
tab(i) := i;END LOOP;
END;
b. DECLARE
TYPE tablou IS TABLE OF NUMBER;
tab tablou:= tablou();
BEGIN FOR i IN 110 LOOP
tab.EXTEND; tab(i) := i;
END LOOP;
END;
c. DECLARE
TYPE tablou IS TABLE OF NUMBER;tab tablou:= tablou();
BEGIN
FOR i IN 110 LOOP
tab(i) := tab(i) + i;
END LOOP;
END;
d. DECLARE
TYPE tablou IS TABLE OF NUMBER;
tab tablou:= tablou();
BEGIN
FOR i IN 110 LOOPtab(i) := i;
END LOOP;
END;
20. Care este varianta de bloc PL/SQL corecta pentru a mentine intr-un vector codurile angajatilor care
au salariul mai mic decat 20000 si lucreaza in departamentul 90?
a. DECLARE
TYPE t_id IS VARRAY(100) OF angajati.id_angajat%TYPE;
v_id t_id :=t_id();
BEGINSELECT id_angajat INTO v_id
FROM angajati
WHERE id_departement=90 AND salariu < 20000;
END;
b. DECLARE
TYPE t_id IS VARRAY(100) OF angajati.id_angajat%TYPE;
v_id t_id :=t_id();
BEGIN
SELECT id_angajat BULK COLLECT INTO v_id
FROM angajati
WHERE id_departament=90 AND salariu < 20000;END;
-
8/7/2019 Toate Intr-un Fisier 2011
52/595
c. DECLARE
TYPE t_id IS VARRAY(100) OF angajati.id_angajat%TYPE;
v_id t_id :=t_id;
BEGIN
SELECT id_angajat BULK COLLECT INTO t_id
FROM angajati
WHERE id_departement=90 AND salariu < 20000;
END;
21. Care este varianta corecta de cod PL/SQL care sterge din tabelul joburi, joburile pentru caresalariul minim este 4000 sau 8200, daca aceste valori sunt mentinute intr-un vector?
a. DECLARETYPE min_sal IS VARRAY(20) OF NUMBER;
v_min_sal min_sal:=min_sal(4000,8200);
BEGIN
FORALL i IN v_min_sal.FIRST..v_min_sal. LAST
DELETE FROM joburi
WHERE salariu_min=v_min_sal(i);
END;
b. DECLARETYPE min_sal IS VARRAY(20) OF NUMBER;
v_min_sal min_sal:=min_sal(4000,8200);
BEGIN
FOR i IN v_min_sal.FIRST..v_min_sal. LAST
DELETE FROM joburi
WHERE salariu_min=v_min_sal(i);
END;
c. DECLARETYPE min_sal IS VARRAY(20) OF NUMBER;
v_min_sal min_sal;
BEGINFORALL i IN v_min_sal.FIRST..v_min_sal. LAST
DELETE FROM joburi
WHERE salariu_min=v_min_sal(i);
END;
22. Care este varianta corecta prin care se adauga in tabelul angajatiun nou camp numit telefon de
tip tablou imbricat, pt care se vor stoca pt fiecare salariat numerele sale de telefon, si apoi se insereaza o
linie noua in tabel?
a. CREATE TYPE lista AS TABLE OF VARCHAR2(20);ALTER TABLE angajati
ADD (telefon lista) NESTED TABLE telefon STORE AS tabel_tel;INSERT INTO angajati
VALUES(200,xxx,4000,40000,lista(0214567898,0214567899));
b. CREATE TYPE lista AS TABLE OF VARCHAR2(20);ALTER TABLE angajati
ADD telefon lista;
INSERT INTO angajati
VALUES(200,xxx,4000,40000,lista(0214567898,0214567899));
c. CREATE TYPE lista AS TABLE OF VARCHAR2(20);ALTER TABLE angajati
ADD (telefon lista) NESTED TABLE telefon STORE AS tabel_tel;
INSERT INTO angajati telefonVALUES((lista(0214567897,0214567898,0214567899));
-
8/7/2019 Toate Intr-un Fisier 2011
53/595
23. Care este varianta corecta prin care se incarca date dintr-un cursor intr-o colectie?
RASPUNSUL CORECT ESTE d. NU ESTE PRINS IN GRILA
a. DECLARETYPE tip_job IS TABLE OF joburi.nume_job%TYPE;
v_nume tip_job;CURSOR c_joburi IS SELECT nume_job FROM joburi;
BEGIN
OPEN c_joburi;
SELECT c_joburi INTO v_nume;
CLOSE c_joburi;
END;
b. DECLARETYPE tip_job IS TABLE OF joburi.nume_job%TYPE;
v_nume tip_job;
CURSOR c_joburi IS SELECT nume_job FROM joburi;
BEGINOPEN c_joburi;
FETCH c_joburi BULK COLLECT INTO v_nume;
CLOSE c_joburi;
END;
c. DECLARETYPE tip_job IS TABLE OF joburi.nume_job%TYPE;
v_nume tip_job;
CURSOR c_joburi IS SELECT nume_job FROM joburi;
BEGIN
OPEN c_joburi;
FETCH c_joburi INTO v_nume;CLOSE c_joburi;
END;
24. Care este varianta incorecta prin care se obtin numele si salariul angajatilor care au salariul mai
mic decat 2500 si nu lucreaza in departamentul avand codul 80?
a. DECLAREv_nume angajati.nume%TYPE;
v_sal angajati.salariu%TYPE;
CURSOR c(var_sal NUMBER, var_dept NUMBER) ISSELECT nume, salariu
FROM angajati
WHERE salariu
-
8/7/2019 Toate Intr-un Fisier 2011
54/595
b. DECLAREv_sal :=2500;
v_dept := 80;
BEGIN
FOR ind IN (SELECT nume, salariu
FROM angajati
WHERE salariu5 OR c%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_nume|| || v_prenume);
END LOOP;
CLOSE c;END;
YYYY Indicator nevalid
-
8/7/2019 Toate Intr-un Fisier 2011
55/595
c. DECLAREv_nume angajati.nume%TYPE; v_prenume angajati.prenume%TYPE;
CURSOR c IS
SELECT nume, prenume FROM angajati
WHERE TO_CHAR(data_angajarii, MM-YYYY)=03-1997
ORDER BY data_angajarii DESC;
BEGIN
OPEN c;
LOOP
FETCH c INTO v_nume, v_prenume;EXIT WHEN c%ROWCOUNT
-
8/7/2019 Toate Intr-un Fisier 2011
56/595
28. Care dintre urmatoarele variante apeleaza corect functia F_TEST care are un singur parametru
numeric?
a. SELECT F_TEST (80)
FROM DUAL ;
b. DECLARE
nr NUMBER;BEGIN
Nr:=F_TEST();
END;
c. VARIABLE nr NUMBER
CALL F_TEST () INTO:nr;
PRINT nr
d. VARIABLE nr NUMBER
CALL FUNCTION F_TEST (80) INTO:nr;
PRINT nr
29. Care dintre urmatoarele vizualizari poate fi folosita in urmatoarea comanda pentru a vizualizacodul complet al subprogramului P1:
SELECT TEXT
FROM .
WHERE NAME = UPPER(P1);
a. USER_OBJECTS
b. USER_ERRORS
c. USER_FUNCTIONS
d. USER_SOURCE
30. Ce trebuie adaugat la linia 9 pentru ca urmatoarea functie sa fie corect creata?
1.CREATE OR REPLACEFUNCTION nr_sal(v_dept NUMBER)2.RETURN NUMBER IS3.v_numar NUMBER(3);4.BEGIN5.SELECT COUNT(*)6.INTO v_numar7.FROM angajati8.WHERE id_departament=v_dept;9...10.END nr_sal;
a. DBMS_OUTPUT.PUT_LINE(v_numar);
b. COMMIT;
c. RETURN v_numar;
d. nu mai trebuie adaugat nimic.
-
8/7/2019 Toate Intr-un Fisier 2011
57/595
31. Se da functia de mai jos ,care permite calcularea unui impozit pe salariu de 10%.
CREATE FUNCTION impozit(p_value IN NUMBER)
RETURN NUMBER IS
BEGIN
RETURN(p_value*0.1);
END impozit;
Care este sintaxa corecta pentru a ape
top related