0% au considerat acest document util (0 voturi)
5 vizualizări5 pagini

Questions

Documentul conține o serie de întrebări și exerciții legate de baze de date, interogări SQL și concepte asociate. Întrebările abordează subiecte precum structura tabelelor, chei primare, operatori de join, clauze WHERE și HAVING, precum și cerințe specifice pentru interogări. Exercițiile propuse variază în dificultate și implică utilizarea scripturilor SQL pentru a obține informații dintr-o bază de date.

Încărcat de

Cristi Popescu
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
5 vizualizări5 pagini

Questions

Documentul conține o serie de întrebări și exerciții legate de baze de date, interogări SQL și concepte asociate. Întrebările abordează subiecte precum structura tabelelor, chei primare, operatori de join, clauze WHERE și HAVING, precum și cerințe specifice pentru interogări. Exercițiile propuse variază în dificultate și implică utilizarea scripturilor SQL pentru a obține informații dintr-o bază de date.

Încărcat de

Cristi Popescu
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Intrebari generale

Q1 – De ce considerati ca o baza de date (o diagrama) este


formata din mai multe tabele? De ce nu este folosit doar un
tabel? Dati argumente pentru fiecare abordare.

Q2 – Care este cheia primara in tabelul de mai jos.


Comentati/justificati raspunsul.
cod nume info
11 Emil NULL
22 Dana DA
13 NULL NU
11 Marius
44 Emil DA

Q3 – Dati un exemplu in care se impune folosirea unui operator


outer join. Exista cereri care se pot rezolva cu ajutorul
operatorului left join si nu se pot rezolva cu ajutorul operatorului
right join?

Q4 – Se considera cererile de mai jos. Pe care o preferati?


Justificati raspunsul.
SELECT * FROM A LEFT JOIN B ON (column1) WHERE B.column2=10;

SELECT * FROM A, B WHERE B.column2=10 AND A.column1=B.column1;


Q5 – Enuntati o cerere care sa necesite operatia de join intre un
tabel cu el insusi.

Q6 – Dati un exemplu de o interogare ce foloseste o subcerere


sincronizata. Puteti folosi o astfel de subcerere in clauza FROM ?

Q7 – Interpretati cererea urmatoare (ce returneaza):

SELECT department_id, hire_date SUM(salary)


FROM employees
GROUP BY department_id, hire_date;

Q8 – Care sunt diferentele dintre clauzele WHERE si HAVING?

Q9 – Enuntati o cerere care foloseste in rezolvare clauza HAVING


fara sa necesite clauza GROUP BY?

Q10 – Este posibil sa stergeti linii din mai multe tabele prin
intermediul unei singure cereri? Comentati.
Exercitii

Nota: rezolvarea exercitiilor de mai jos presupune rularea


scriptului hr_create.sql; diagrama asociata (nu contine tabelele
works_on si project) se gaseste in fisierul Diagrama_HR.pdf.

Notatii:
* problema care verifica notiuni de baza;
** problema ce sintetizeaza notiuni elementare;
*** problema cu un grad ridicat de dificultate;

1) * Pentru fiecare oras sa se afiseze numele tarii in care se afla si


numarul de angajati din cadrul sau.
2) ** Sa se afiseze numele, salariul, titlul job-ului, orasul si tara in
care lucreaza angajatii condusi direct de King.
3) ** Afisati codul, numele si salariul tuturor angajatilor care castiga
mai mult decat salariu mediu pentru job-ul corespunzator si
lucreaza intr-un departament cu cel putin unul din angajati al
caror nume contine litera t.
4)* Sa se afiseze departamentele fara angajati (2 solutii: cu/fara
join).
5) * Pentru fiecare tara afisati numarul de angajati si numele
acesteia.
6) * Afisati angajatii care au ocupat de mai multe ori aceeasi
functie.
7) ** Sa se afiseze codul, numele departamentului, numarul de
angajati si salariul mediu din departamentul respective, impreuna
cu numele, salariul si jobul angajatilor din acel departament (se
vor afisa si departamentele fara angajati).
8) *** Sa se afiseze salariatii care au fost angajati in aceeasi zi a
lunii in care cei mai multi dintre salariati au fost angajati.
9) **Sa se afiseze numele, departamentul si jobul-ul tuturor
angajatilor al caror salariu si comision coincide cu salariul si
comisionul unui angajat din Oxford.
10) *Sa se obtina numarul de angajati care au avut cel putin trei job-
uri, luandu-se in considerare si jobul current.
11) ***Sa se obtina numarul de angajati care au avut cel putin trei
job-uri distincte, luandu-se in considerare si jobul curent.
12) **Sa se afiseze lista angajatilor care au lucrat numai pe proiecte
conduse de managerul de proiect avand codul 102.
13) *** Sa se afiseze lista angajatilor care au lucrat pe aceleasi
proiecte ca si angajatul avand codul 200.
14) *Afisati informatii despre cei mai bine platiti 10 angajati.
15) ** Afisati informatii despre angajatii care detin unul dintre cele
mai mari 10 salarii.
16) ***Pentru fiecare angajat sa se afiseze numarul de angajati pe
care ii conduce (ierarhic, nu doar direct).
17) ** Sa se afiseze jobul si o coloana info ce se obtine astfel:
- suma salariilor, pentru job-urile care incep cu litera S;
- media generala a salariilor, pentru job-ul avand salariul maxim;
- salariul minim, pentru fiecare din celelalte job-uri.
18) ***Se citesc doua date calendaristice de la tastatura afisati
toate zilele lucratoare dintre cele doua date introduce.
19) **Inserati o linie in tabelul employees prin intermediul unei
subcereri.
20) *Schimbati salariul si comisionul celui mai prost platit salariat
din firma, astfel incat sa fie egale cu salariul si comisionul sefului
sau (maxim o subcerere).
21) *Stergeti toate inregistrarile din tabelul departments. Ce
inregistrari pot fi sterse?
22) *Se doreste stergerea automata a angajatilor atunci cand seful
lor direct este demis.
23) **Sa se creeze o vizualizare viz50 care contine coloanele
employee_id, email, job_id, hire_date, salariul annual,
department_id, department_name, city. Inserati o linie prin
intermediul acestei vizualizari specificand valoarea 60 pentru
coloana department_id.
24) *** Pentru fiecare angajat sa se afiseze orasul in care a lucrat
cele mai multe zile.
25) ** Pentru fiecare angajat sa se afiseze numele, numarul de
departamente pe care le conduce si in care lucreaza mai putin de
10 angajati, numarul de departamente pe care le conduce si in
care lucreaza mai mult de 10 angajati.
26) *** Pentru fiecare departament, sa se obtina numele
salariatului cu cea mai mare vechime.
27) ** Sa se afiseze un tabel cu numele angajatilor, stabilindu-se
pentru fiecare angajat daca a fost „promovat”/„penalizat”/„a
pastrat nivelul”. Se considera ca un angajat a fost promovat daca
media salarilor pentru ultimul job detinut anterior este mai mica
decat media salarilor pentru jobul detinut in prezent.
28) ** Se cer angajatii care au lucrat la toate proiectele finalizate in
2006.
29) ** Se considera tabelul rezultate(id_concurent, b1, b2, b3, b4,
b5, b6, b7, b8, b9, b10) in care se salveaza rezultatele unor
concurenti la bowling (10 aruncari, fiecare rezultat fiind un numar
cuprins intre 0 si 10). Sa se afiseze concurentii care au avut 3
aruncari ratate (punctaj 0).
30) ** Pentru angajatii din departamentul 50 sa se afiseze
urmatoarele informatii: codul, numele, data angajarii si numarul
zilelor de Luni, Marti, ..., Duminica care exista in luna angajarii.
(Exemplu: 127 Landry 14-JAN-99 4 4 4 4 5 5 5).

S-ar putea să vă placă și