Vous êtes sur la page 1sur 13

Universitatea Constantin Brncui din Trgu-Jiu

Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu

BAZE DE DATE
LECTOR DR. ADRIAN RUNCEANU

24.05.2013

Curs

- BAZE DE DATE

Limbajul SQL - grile

24.05.2013

Curs

- BAZE DE DATE

1. Se dau tabelele:
STUDENTI(CodStud, NumeStud, Facultate, LoculNasterii)
PROFESORI(CodProf, NumeProf, Catedra, GradDidactic,
LoculNasterii)

24.05.2013

Curs

- BAZE DE DATE

Care dintre urmatoarele variante va returna studentii si profesorii din provincie?


a) SELECT CodStud, NumeStud, LoculNasterii, CodProf, NumeProf, LoculNasterii
FROM STUDENTI, PROFESORI
WHERE LoculNasterii<>Bucuresti
b) SELECT CodStud, NumeStud, LoculNasterii, CodProf, NumeProf, LoculNasterii
FROM STUDENTI, PROFESORI
WHERE LoculNasterii = Provincie
c) SELECT CodStud, NumeStud, LoculNasterii
FROM STUDENTI
WHERE LoculNasterii = Provincie
UNION
SELECT CodProf, NumeStud, LoculNasterii
FROM PROFESORI
WHERE LoculNasterii = Provincie
d) SELECT CodStud, NumeStud, LoculNasterii
FROM STUDENTI
WHERE LoculNasterii <>Bucuresti
UNION
SELECT CodProf, NumeStud, LoculNasterii
FROM PROFESORI
WHERE LoculNasterii <>Bucuresti

Solutie: d)

24.05.2013

Curs

- BAZE DE DATE

2. Se da tabelul:
CHITANTE (NrChitanta, Suma, DataChitanta, NrGhiseu )

24.05.2013

Curs

- BAZE DE DATE

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
Solutie: c)

24.05.2013

Curs

- BAZE DE DATE

3. Se da tabelul:
ANGAJATI (CodAngajat, Nume, DataAngajare,
Compartiment, Profesia, Salariu)

24.05.2013

Curs

- BAZE DE DATE

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

24.05.2013

Curs

- BAZE DE DATE

Solutie: c)

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

24.05.2013

Curs

- BAZE DE DATE

10

Solutie: c)

5. 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}

24.05.2013

Curs

- BAZE DE DATE

11

S se creeze tabelele Angajati_pnu, Departamente_pnu


(n irul de caractere pnu, p reprezint prima liter a prenumelui,
iar nu reprezint primele dou litere ale numelui dumneavoastr).
DEPARTAMENTE_PNU
Id_dept number(3) cheie primara (PK)
Den_dept varchar2(20)
Id_manager varchar2(3)
Locatie varchar2(100)
ANGAJATI_PNU
Id_angajat number(3) cheie primara (PK)
Id_dept number(3) referinta (FK) la tabela DEPARTAMENT_PNU
Nume varchar2(40)
Prenume varchar2(40)
Functie varchar2(25)
Salariu number(7)
Id_manager varchar2(3)
Data_ang date
Comision number(5)

24.05.2013

Curs

- BAZE DE DATE

12

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 conine irul ec sau in si salariul
sa nu fie este egal cu 1000, 2000 sau 3000 $.
(operatorul NOT IN)

24.05.2013

Curs

- BAZE DE DATE

ntrebri?

13

Vous aimerez peut-être aussi