c11-bddm_2011

19
BAZE DE DATE LECTOR DR. ADRIAN RUNCEANU Universitatea “Constantin Brâncuşi” din Târgu-Jiu Facultatea de Inginerie Catedra de Automatică şi Ştiinţe Aplicate

Upload: nitu-mihai

Post on 14-Jul-2016

216 views

Category:

Documents


1 download

DESCRIPTION

Baze de Date pentru doritorii de a invata sql

TRANSCRIPT

Page 1: C11-BDDM_2011

BAZE DE DATE

LECTOR DR. ADRIAN RUNCEANU

Universitatea “Constantin Brâncuşi” din Târgu-Jiu

Facultatea de Inginerie

Catedra de Automatică şi Ştiinţe Aplicate

Page 2: C11-BDDM_2011

Curs 11

1. Limbajul SQL – grile

2. Limbajul PL/SQL - grile

18.12.2011

Page 3: C11-BDDM_2011

1. Se da tabelul:

CHITANTE ( NrChitanta, Suma,

DataChitanta, NrGhiseu )

18.12.2011

Page 4: C11-BDDM_2011

Care dintre urmatoarele interogari SQL are ca efect afisarea zilelor in care s-au emis mai mult de 2 chitante?

a) SELECT Nrchitanta, Suma, Data

FROM CHITANTE

WHERE COUNT(NrChitanta)>2

b) SELECT Nrchitanta, Suma, Data

FROM CHITANTE

HAVING COUNT(NrChitanta)>2

c) SELECT CHITANTE.Data

FROM CHITANTE

GROUP BY Data

HAVING COUNT(NrChitanta)>2

d) SELECT COUNT(Data), COUNT(NrChitanta)

FROM CHITANTE

WHERE Data IS Unique

18.12.2011

Solutie: c)

Page 5: C11-BDDM_2011

2. Se da tabelul:

ANGAJATI (CodAngajat, Nume,

DataAngajare, Compartiment, Profesia,

Salariu)

18.12.2011

Page 6: C11-BDDM_2011

Solutie: d)

Care dintre urmatoarele instructiuni SQL permite afisarea numarului de salariati pe fiecare compartiment care incepe cu litera „A”?

a) SELECT CodAngajat, Nume, Compartiment

FROM ANGAJATI

WHERE Nume like A*

b) SELECT COUNT(CodAngajat) AS Numar, Nume, Compartiment

FROM ANGAJATI

WHERE Nume like „A*”

GROUP BY Compartiment

c) SELECT CodAngajat, Nume, Compartiment

FROM ANGAJATI

WHERE Compartiment like A*

d) SELECT COUNT(CodAngajat) AS Numar, Compartiment

FROM ANGAJATI

WHERE Compartiment like „A*”

GROUP BY Compartiment

18.12.2011

Page 7: C11-BDDM_2011

Solutie: c)

3. Se da tabelul:

ANGAJATI (CodAngajat, Nume, DataAngajare, Profesia)

Care dintre urmatoarele instructiuni SQL permite stergerea salariatilor angajati înainte de începutul anului 2006 cu profesia “economist”.

a) UPDATE Angajati

SET CodAngaj = Null

WHERE DataAngajare < {1/1/2006} AND profesia = “economist”

b) DELETE FROM Angajati

WHERE DataAngajare < {1/1/2006} AND profesia = “economist”

c) DELETE *

FROM Angajati

WHERE DataAngajare < {1/1/2006} AND profesia LIKE “*economist*”

d) DELETE *

FROM Angajati

WHERE profesia LIKE “*economist*”

HAVING YEAR(DataAngajare) <2006

18.12.2011

Page 8: C11-BDDM_2011

Solutie: c)

4. Se da tabelul:

ANGAJATI (CodAngajat, Nume, DataAngajare, Profesia, Salariu)

Care dintre urmatoarele instructiuni SQL permite majorarea salariului cu 1% pentru salariatii angajati în anul 2005.

a) UPDATE Angajati

SET Salariu = Salariu + 1%

WHERE DataAngajare IN 2005

b) SELECT Salariu + 1%* Salariu

FROM Angajati

WHERE DataAngajare IN ({1/1/2005} , {31/12/2005})

c) UPDATE Angajati

SET Salariu = Salariu*1.01

WHERE YEAR(DataAngajare) = 2005

d) UPDATE Salariu

FROM Angajati

SET Salariu = Salariu * 101%

WHERE DataAngajare BETWEEN {1/1/2005} AND {31/12/2005}

18.12.2011

Page 9: C11-BDDM_2011

Se considera create tabelele Angajati, Departamente.

DEPARTAMENTE Id_dept number(3) cheie primara (PK) Den_dept varchar2(20) Id_manager varchar2(3) Locatie varchar2(100) ANGAJATI Id_angajat number(3) cheie primara (PK) Id_dept number(3) referinta (FK) la tabela DEPARTAMENT Nume varchar2(40)

Prenume varchar2(40)

Functie varchar2(25) Salariu number(7)

Id_manager varchar2(3)

Data_ang date

Comision number(5)

18.12.2011

Page 10: C11-BDDM_2011

1. (2p) Sa se afiseze numele fiecarui angajat, insotit de

numele departamentului din care face parte si de data

angajarii lor.

2. (2p) Determinati numarul de ingineri fara a-i afisa.

3. (2p) Să se afiseze numele, job-ul si salariul pentru toti

salariatii al caror job conţine şirul “ec” sau “in” si salariul

sa nu fie este egal cu 1000, 2000 sau 3000 $.

(operatorul NOT IN)

18.12.2011

Page 11: C11-BDDM_2011

Curs 11

1. Limbajul SQL – grile

2. Limbajul PL/SQL - grile

18.12.2011

Page 12: C11-BDDM_2011

Solutie c)

1. Ce se afiseaza cand urmatorul cod va fi executat?

DECLARE

varA NUMBER := 12;

BEGIN

DECLARE

varB NUMBER := 8;

BEGIN

varA := varA + varB;

END;

DBMS_OUTPUT.PUT_LINE(varB);

END;

a) 8

b) 12

c) Nimic, blocul va esua cu o eroare

d) 20

e) varB

18.12.2011

Page 13: C11-BDDM_2011

Solutie d)

2. Ce tip de bloc PL/SQL este defint prin urmatorul cod ?

BEGIN

DBMS_OUTPUT.PUT_LINE('Primul test grila);

END;

a) procedure

b) subroutine

c) function

d) anonim

18.12.2011

Page 14: C11-BDDM_2011

Solutie c)

3. Examinati urmatorul cod. Care este valoarea finala a variabilei V_MYVAR ?

DECLARE

v_myvar NUMBER;

BEGIN

v_myvar := 1 + 2 * 3;

v_myvar := v_myvar * 2;

END;

a) 81

b) 49

c) 14

d) 18

18.12.2011

Page 15: C11-BDDM_2011

Solutie b)

4. Litera P in expresia PL/SQL vine de la:

a) Processing

b) Procedural

c) Primary

d) Proprietary

18.12.2011

Page 16: C11-BDDM_2011

Solutie c)

5. Ce se intampla dupa executia urmatorului cod ?

BEGIN FOR i in 1..3 LOOP DBMS_OUTPUT.PUT_LINE (i); i := i + 1; END LOOP; END; a) Se afiseaza 1, 2, 3 b) Se afiseaza 2, 3, 4 c) Va rezulta o eroare deoarece nu se poate modifica

contorul intr-o bucla FOR d) Va rezulta o eroare deoarece contorul nu a fost declarat

in mod explicit

18.12.2011

Page 17: C11-BDDM_2011

Solutie a)

6. Examinati urmatorul cod. Care este valoare finala a variabilei V_MYBOOL ?

DECLARE

v_mynumber NUMBER;

v_mybool BOOLEAN;

BEGIN

v_mynumber := 6;

v_mybool := (v_mynumber BETWEEN 10 AND 20);

v_mybool := NOT (v_mybool);

END;

a) Adevarat

b) Fals

18.12.2011

Page 18: C11-BDDM_2011

Solutie d)

7. Care dintre atributele cursorului este setat la

numarul total de linii ?

a) %ISOPEN

b) %NOTFOUND

c) %FOUND

d) %ROWCOUNT

18.12.2011

Page 19: C11-BDDM_2011

Sfârșit curs.

BAFTA!

18.12.2011