Exemple de fraze SQL Exemple de fraze SQL Enunt: Se da o societate comerciala cu profil de activitate repararea de aparatura informatica (servere

, computere personale, imptrimante, dispozitive mobile etc). Societatea are in componenta persoane specializate pe domenii. Pentru fiecare reparatie se intocmeste o fisa pe care se inscriu date despre reparatia efectuata. I. Structura tabelelor Pentru a administra activitatea companiei, proiectam urmatoarea baza de date: Angajati Reparatii Clienti id_angajat - autonumber nr_reparatie - autonumber id_client - autonumber nume - text data_reparatie - date denumire - text prenume - text obiect - text adresa - text adresa - text an_fabricatie - number telefon - text telefon - text diagnostic - text e_mail - text data_angajare - date tarif - number website - text specializare - text id_angajat - number observatii - text salariu - numeric id_client - number

II. Operatii creare, modificare tabele si adaugare de inregistrari 1. Sa se realizeze o fraza SQL pentru crearea tabelei Angajati (mai putin ultimul camp dintre cele enumerate mai sus) CREATE TABLE Angajati (id_angajat COUNTER PRIMARY KEY, nume TEXT(50), prenume TEXT(50), adresa TEXT(100), telefon TEXT(20), data_angajare DATE, specializare TEXT(20)); 2. Sa se adauge tabelei Angajati ultimul camp (salariu) ALTER TABLE Angajati ADD COLUMN salariu NUMBER 3. Sa se insereze in tabela un angajat nou cu datele: nume - Popescu prenume - Marius adresa - Str. Revolutiei nr.1 telefon - 0722.77.28.55 data_angajare - 24/01/2001 salariu - 1500 specializare - electronica INSERT INTO Angajati (nume, prenume, adresa, telefon, data_angajare, salariu, specializare) VALUES ("Popescu", "Marius" , "Str. Revolutiei nr.1", "0722.77.28.55", "01/24/2001", 1500, "electronica") III. Interogari (selectii) simple 4. Sa se afiseze numele, prenumele si telefoanele angajatilor cu salarii mai mari sau egale cu 1000, ordonand - pagina 1 -

sa se calculeze vechimea in munca pentru fiecare angajat (in ani). Sa se selecteze numele si prenumele angajatilor.1) AS spor_vechime FROM Angajati IV.pagina 2 - . In lista nu vor aparea angajatii care nu au telefon. adresa FROM Clienti INNER JOIN Reparatii ON Reparatii. Sa se afiseze toate reparatiile efectuate in ultimele 10 zile.id_client AND obiect="imprimanta" sau SELECT DISTINCT denumire. Interogari multiple 8. data_reparatie FROM Angajati. data_angajare ASC 6. Sa se selecteze toate datele despre persoanele angajate in martie 2002 si au una dintre specializarile “informatica” sau “electronica”. Sa se afiseze denumirea si adresa clientilor care au avut de reparat produsul “imprimanta”. Intr-un alt camp.id_client = Clienti. SELECT * FROM Reparatii WHERE data_reparatie > Date()-10 7. Reparatii WHERE Reparatii. calculat si denumit spor_vechime. IIF(vechime<2. (Date()-data_angajare)/365 AS vechime. Clienti WHERE Angajati. data_angajare ASC sau SELECT * FROM Angajati WHERE (data_angajare >= #3/1/2002# AND data_angajare <= #3/31/2002#) AND specializare IN ("informatica". prenume. SELECT nume. SELECT nume.id_angajat AND Reparatii. prenume. Reparatii.id_client = Clienti. SELECT DISTINCT denumire. "electronica") ORDER BY salariu DESC.id_client WHERE obiect="imprimanta" 9. telefon FROM Angajati WHERE salariu>=1000 AND telefon IS NOT NULL ORDER BY nume ASC 5. SELECT * FROM Angajati WHERE data_angajare BETWEEN #03/01/2002# AND #03/31/2002# AND specializare IN ("informatica".id_angajat = Reparatii. adresa FROM Clienti.Exemple de fraze SQL alfabetic lista rezultata.id_client AND Clienti. prenume. SELECT nume.0. sa se afiseze 0 daca vechimea este sub 2 ani si 1 daca vechimea este peste 2 ani. Sa se afiseze numele angajatilor care au realizat reparatii pentru clientul “Millenium Trading” si datele la care au fost efectuate aceste reparatii. "electronica") ORDER BY salariu DESC.id_client = Clienti.denumire = "Millenium Trading" sau .

Sa se calculeze suma incasata de la fiecare client in anul 2002.id_client WHERE Year (data_reparatie)=2002 GROUP BY denumire VI. adresa FROM Clienti WHERE adresa LIKE "*Craiova*" VII. DELETE FROM Angajati WHERE id_angajat=1 OR id_angajat=3 15. DELETE FROM Angajati WHERE id_angajat IN (SELECT id_angajat FROM Reparatii WHERE nr_reparatie=1 OR nr_reparatie=3) . data_reparatie FROM (Angajati INNER JOIN Reparatii ON Angajati. Sa se afiseze toti angajatii si toti clientii care au domiciliul in Craiova. Obs. deci se foloseste clauza HAVING. etc). Interogari de selectie ce utilizeaza functii de grup 10. Interogari tip UNION 13. Sa se stearga din baza de date angajatii care au participat la reparatiile cu numerele 1 si 3. afisandu-se numai acelea pentru care costul mediu depaseste valoarea 750.id_client WHERE Clienti.id_angajat) INNER JOIN Clienti ON Reparatii.pagina 3 - . SELECT denumire.Exemple de fraze SQL SELECT nume. SELECT obiect. prenume. SELECT obiect. AVG(tarif) as cost_mediu FROM Reparatii GROUP BY obiect HAVING AVG(tarif)>750 ORDER BY AVG(tarif) DESC 12.: Clauza WHERE nu lucreaza cu functii totalizatoare.id_client = Clienti. Sa se calculeze costul mediu al unei categorii de reparatii (medie per calculator. medie per imprimanta.id_angajat = Reparatii. AVG(tarif) as cost_mediu FROM Reparatii GROUP BY obiect ORDER BY AVG(tarif) DESC 11. Sa se calculeze costul mediu al unei categorii de reparatii.denumire = "Millenium Trading" V. SELECT nume. Lista va fi ordonata descrescator dupa cost.id_client = Reparatii. adresa FROM Angajati WHERE adresa LIKE "*Craiova*" UNION SELECT denumire as nume. SUM(tarif) as suma_incasata FROM Clienti INNER JOIN Reparatii ON Clienti. Sa se stearga din baza de date angajatii care au codul 1 sau 3. Interogari de stergere 14.

Interogari de actualizare (modificare) date 16. jucatori . In exemplu de mai sus. iar coloanele la PIVOT. X.examene. Pe cat posibil. Sa se afiseze clientii care incep cu un sir introdus de la tastatura. Nu folositi clauza Order By pentru o subselectie. Recomandari Clauzele Inner Join. sa se evite utilizarea operatorului Not. iar YEAR (data_reparatie) coloanele. pe cat posibil. TRANSFORM COUNT(nr_reparatie) SELECT nume FROM Angajati INNER JOIN Reparatii ON Angajati.categorii. nume reprezinta randurile. COUNT(nr_reparatie) reprezinta valorile.orase-de-nastere.firme-producatoare facturi-clienti. Right Join sunt mai rapide decat clauzelor Where. Interogari de tip crosstab 18. facturi . orase . Sa se mareasca salariile cu 20% pentru angajatii veniti in firma inainte de 1 ianuarie 2002. Sa se afiseze cate reparatii a efectuat fiecare angajat in fiecare an.judete. echipe . UPDATE Angajati SET salariu = salariu *1. produse . folosirea tabelelor temporale. Tipuri si exemple de relatii 1-M: studenti . iar anii pe coloanele tabelului. jucatori . Alte tipuri de interogari 19.Exemple de fraze SQL VIII.tari M-M: studenti .echipe.pagina 4 - . UPDATE Reparatii SET tarif=1500 WHERE obiect=”calculator” 17. e_mail FROM Clienti WHERE denumire LIKE [Introduceti numele] & "*" XI. XII.filme.profesori. actori . studenti . randurile la SELECT. Evitati.2 WHERE data_angajare<#1/1/2002# IX.id_angajat = Reparatii. Sa se modifice tariful reparatiilor la 1500 pentru obiectul “calculator”. SELECT denumire. Numele angajatilor se vor afisa pe linii.produse. telefon. carti . Left Join.id_angajat GROUP BY nume PIVOT YEAR (data_reparatie) O interogare de tip crosstab se realizeaza punand valorile la TRANSFORM. produse .tari.abonati .

Sign up to vote on this title
UsefulNot useful