Sei sulla pagina 1di 13

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

Facultatea de Inginerie
Departamentul de Automatică, Energie şi Mediu

BAZE DE DATE

LECTOR DR. ADRIAN RUNCEANU


24.05.2013 Curs - BAZE DE DATE 2

Limbajul SQL - grile


24.05.2013 Curs - BAZE DE DATE 3

1. Se dau tabelele:

STUDENTI(CodStud, NumeStud, Facultate, LoculNasterii)


PROFESORI(CodProf, NumeProf, Catedra, GradDidactic,
LoculNasterii)
24.05.2013 Curs - BAZE DE DATE 4

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” Solutie: d)
d) SELECT CodStud, NumeStud, LoculNasterii
FROM STUDENTI
WHERE LoculNasterii <>”Bucuresti”
UNION
SELECT CodProf, NumeStud, LoculNasterii
FROM PROFESORI
WHERE LoculNasterii <>”Bucuresti”
24.05.2013 Curs - BAZE DE DATE 5

2. Se da tabelul:

CHITANTE (NrChitanta, Suma, DataChitanta, NrGhiseu )


24.05.2013 Curs - BAZE DE DATE 6

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 7

3. Se da tabelul:

ANGAJATI (CodAngajat, Nume, DataAngajare,


Compartiment, Profesia, Salariu)
24.05.2013 Curs - BAZE DE DATE 8

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 9

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 conţine ş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 13

Întrebări?

Potrebbero piacerti anche