Toate Intr-un Fisier 2011

download Toate Intr-un Fisier 2011

of 596

Transcript of Toate Intr-un Fisier 2011

  • 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, [email protected], 2500.50)

    INSERT INTO SALARIAT(COD_ANG,NUME,PRENUME, VARSTA,EMAIL)

    VALUES(5, Ene, Ana, 20, [email protected])

    INSERT INTO SALARIAT(COD_ANG,NUME,PRENUME,VARSTA,EMAIL,

    SALARIU) VALUES(5, Ene, Ana, 1/06/2009, 20, [email protected])INSERT INTO SALARIAT

    VALUES(5, Ene, Ana, 1/06/2009, 20, [email protected], 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