1 / 59

CURS 2_3

CURS 2_3. SQL. LIMBAJUL SQL - O biective şi caracteristici. crearea bazelor de date şi a structurilor pentru relaţii; efectuarea de operaţii elementare de gestiune a datelor , precum inserarea, modificarea şi ştergerea acestora din cadrul relaţiilor;

cosima
Download Presentation

CURS 2_3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CURS 2_3 SQL M. Danubianu - Teoria si implementarea bazelor de date

  2. LIMBAJUL SQL - Obiective şi caracteristici • crearea bazelor de date şi a structurilor pentru relaţii; • efectuarea de operaţii elementare de gestiune a datelor, precum inserarea, modificarea şi ştergerea acestora din cadrul relaţiilor; • efectuarea interogărilor începând cu cele simple până la cele complexe, în scopul transformării datelor brute în informaţii. • operaţiile se realizează cu un efort minim din partea utilizatorului, • structura comenzilor şi sintaxa acestora este relativ uşor de învăţat. • limbajul este portabil, - respectă un standard recunoscut astfel încât să se poată utiliza aceeaşi structură şi sintaxă a comenzilor la trecerea de la un SGBD la altul • SQL prezintă două componente principale: • un limbaj de definire a datelor (DDL) utilizat pentru definirea structurii bazei de date şi • un limbaj de manipulare a datelor (DML) pentru regăsirea şi reactualizarea datelor. M. Danubianu - Teoria si implementarea bazelor de date

  3. SQL nu conţine comenzi de control (nu există instrucţiuni de tipul IF..THEN..ELSE, GO TO, DO..WHILE sau alte comenzi care să genereze un flux de control) poate fi utilizat în două moduri: • interactiv prin introducerea instrucţiunilor de la un terminal; • prin integrarea instrucţiunilor SQL într-un limbaj procedural. • Are următoarele caracteristici: • limbaj neprocedural. • are un format liber; • comenzile sunt structurate pe baza unor cuvinte standard din limba engleză ( Create, Select, Insert..) M. Danubianu - Teoria si implementarea bazelor de date

  4. Principalele comenzi SQL M. Danubianu - Teoria si implementarea bazelor de date

  5. Terminologie şi convenţii de scriere a comenzilor SQL • In limbajul SQL standardizat se utilizează termenii de tabele , coloane şi rânduri. • O instrucţiune SQL este formată din cuvinte rezervate şi cuvinte definite de utilizator. • Cuvintele rezervate : • au un înţeles fix, trebuie scrise exact cum este necesar şi nu pot fi împărţite în mai multe rânduri. • Cuvintele definite de utilizator : • sunt formate de către acesta, conform unor anumite reguli de sintaxă şi reprezintă denumirile diverselor obiecte din baza de date, cum ar fi relaţiile, coloanele , vederile, indexurile etc. • Majoritatea compnentelor unei instrucţiuni SQL nu sunt sensibile la tipul de litere. • excepţie importantă - faptul că datele de tip caracter literal trebuie să fie scrise exact cum apar în baza de date. M. Danubianu - Teoria si implementarea bazelor de date

  6. Manipularea datelor în SQL • Operaţia fundamentală în SQL este consultarea • fraza SELECT - prezintă trei clauze principale : SELECT, FROM şi WHERE. • SELECT corespunde operatorului de proiecţie din algebra relaţională, şi este utilizat pentru desemnarea listei de atribute (coloane, câmpuri) din tabelul rezultat; • FROM permite enumerarea relaţiilor din care vor fi extrase informaţiile aferente consultării; • WHERE desemnează predicatul selectiv al algebrei relaţionale, relativ la atributele relaţiilor care apar în clauza FROM. • comandă extrem de puternică echivalentul operaţiilor de selecţie, proiecţie şi uniune din algebra relaţională M. Danubianu - Teoria si implementarea bazelor de date

  7. Forma generală a instrucţiunii SELECT este: M. Danubianu - Teoria si implementarea bazelor de date

  8. Secvenţa de prelucrare a unei fraze SELECT... • ...este următoarea: • FROM - specifică tabelul sau tabelele care vor fi utilizate; • WHERE - filtrează rândurile supuse unei anumite condiţii sau conţine condiţia de joncţiune între mai multe tabele • GROUP BY - formează grupuri de rânduri cu aceleaşi valori ale coloanelor din lista de parametri; • HAVING - filtrează grupurile supuse unei anumite condiţii; • SELECT - specifică ce coloane vor apărea în tabelul rezultat; • ORDER BY - specifică ordinea ieşirii. • Operaţia SELECT este închisă: rezultatul unei interogări unui tabel este un alt tabel. • rezultatul poate fi un tabel "normal" (tabel salvat pe disc), un tabel temporar (cursor - tabel care se şterge automat la închiderea unei sesiuni de lucru) sau chiar o variabilă-tablou (matrice). M. Danubianu - Teoria si implementarea bazelor de date

  9. Interogări în SQL M. Danubianu - Teoria si implementarea bazelor de date

  10. Consultarea datelor dintr-un singur tabelselectate dupa diferite conditii impuse inregistrarilor • Care sunt angajatii al caror nume este ‘ King’? • intervine un singur tabel şi anume Employees. In clauza WHERE apare predicatul de selecţie (conditia) : last_name=‘King’ M. Danubianu - Teoria si implementarea bazelor de date

  11. Care sunt angajatii subordonati managerului cu identificatorul 100 cu salarii mai mari de 2500? M. Danubianu - Teoria si implementarea bazelor de date

  12. Operatorul BETWEEN • Se poate reformula ultima interogare astfel: Care sunt angajatii subordonati managerului cu identificatorul 100 cu salarii mai mari de 2500 dar mai mici de 10000? • Se poate folosi următoarea instrucţiune: SELECT * FROM employees WHERE manager_id=100 AND salary>2500 AND salary <10000 sau M. Danubianu - Teoria si implementarea bazelor de date

  13. Operatorul LIKE • Se foloseşte pentru a compara un atribut de tip şir de caractere cu un literal (constantă de tip şir de caractere). • %, "_" este un specificator multiplu, joker sau mască. • Care sunt angajatii al căror nume contine, in orice pozitie, incepand cu poz. 2, caracterul ‘s’? M. Danubianu - Teoria si implementarea bazelor de date

  14. Operatorul IN • Are următorul format general: • expresie1 IN (expresie2, expresie3,..) • Rezultatul evaluării unui predicat care conţine acest operator va fi "adevărat" dacă valoarea expresiei1 este egală cu cel puţin una din valorile: expresie2, expresie3, .. şi este util atunci când condiţiile de selecţie sunt mai complexe. • Care sunt angajatii al caror identificator de job este ‘IT-PROG” sau ‘ST_MAN’? M. Danubianu - Teoria si implementarea bazelor de date

  15. Operatorul IS NULL • Care sunt angajatii care nu primesc comision? • Notă: Operatorul NULL se utilizează cu IS şi nu cu semnul "=". Utilizarea unei expresii de forma =NULL ar conduce la un rezultat care va fi întotdeauna fals, chiar dacă expresia nu este nulă. M. Danubianu - Teoria si implementarea bazelor de date

  16. Consultarea datelor dintr-un singur tabelselectate dupa diferite coloane • Faceti o lista cu prenumele si numele angajatilor ordonate descrescator dupa prenume. M. Danubianu - Teoria si implementarea bazelor de date

  17. Consultarea datelor din mai multe tabeleReuniunea inregistrarilor • Presupunem ca avem doua tabele, cu structuri identice, cu date referitoare la angajati, employees1 si employees2. Fiecare din acestea contin date corespunzatoare angajatilor din grupe diferite de departamente. Dacase doreste o situatie a tutiror angajatilor se va face o reuniune dupa modelul: SELECT * FROM employees1 UNION SELECT * FROM employees22 • SQL elimină automat dublurile, deci nu este necesară utilizarea clauzei DISTINCT. M. Danubianu - Teoria si implementarea bazelor de date

  18. Consultarea datelor din mai multe tabeleDiferenţa • Să se găsească acele departamente pentru care nu exista nici un angajat M. Danubianu - Teoria si implementarea bazelor de date

  19. Consultarea datelor din mai multe tabeleGasirea inregistrarilor comune SELECT * FROM employees1 INTERSECT SELECT * FROM employees2 M. Danubianu - Teoria si implementarea bazelor de date

  20. Produsul cartezian SELECT * FROM employees, departments M. Danubianu - Teoria si implementarea bazelor de date

  21. Consultarea datelor din mai multe tabele Joncţiunea în SQL • trebuie ţinut cont de faptul că joncţiunea este o combinaţie de produs cartezian şi selecţie. • Care este numele departamentelor in care exista angajati? M. Danubianu - Teoria si implementarea bazelor de date

  22. Deoarece toate datele necesare se gasesc in tabelul employees se impune o legatura …??? • Care este numele managerului angajatului cu identificatorul 102? M. Danubianu - Teoria si implementarea bazelor de date

  23. Subconsultări • posibilitatea imbricării a două sau mai multe fraze SELECT astfel încât pot fi formulate interogări cu mare grad de complexitate • Forma generală a unei subconsultări: SELECT listă_câmpuri1 FROM Listă_tabele1 WHERE câmp1 operator (SELECT listă_câmpuri2 FROM Listă_tabele2 WHERE condiţii) unde operator poate fi: IN sau NOT IN EXIST sau NOT EXIST CONTAINS, ALL, ANY etc. • Subconsultări : corelate sau necorelate M. Danubianu - Teoria si implementarea bazelor de date

  24. Operatorul IN (NOT IN) Care sunt angajatii care lucreaza in acelasi departament cu angajatul cu numele ‘King’? M. Danubianu - Teoria si implementarea bazelor de date

  25. Care sunt angajatii care lucreaza in alte departamente decat angajatii cu numele ‘King’? M. Danubianu - Teoria si implementarea bazelor de date

  26. Operatorii ALL, SOME şi ANY • ALL, SOME şi ANY permit utilizarea unui predicat de comparaţie care este aplicat rezultatului unei subconsultări. • predicat de comparaţie -un predicat care conţine unul din operatorii: =,>=,<=,<,> sau . • Care este numele si departamentul angajatilor al caror salariu este mai mare decat salariile tuturor angajatilor din departamentul 100. M. Danubianu - Teoria si implementarea bazelor de date

  27. Funcţiile predefinite: COUNT, SUM, AVG, MAX, MIN • Formatul general al unei fraze SELECT ce conţine funcţii predefinite: SELECT fcţ_pred1, fcţ_pred2,..fcţ_predn FROM listă de tabele WHERE condiţii • In lipsa opţiunii GROUP BY, dacă în clauza SELECT este prezentă o funcţie predefinită, tabelul rezultat va conţine o singură linie. M. Danubianu - Teoria si implementarea bazelor de date

  28. Funcţia COUNT • Contorizează valorile unei coloane - numără, într-o relaţie câte valori diferite de null are coloana specificată. Câte comisioane se platesc? M. Danubianu - Teoria si implementarea bazelor de date

  29. Funcţia COUNT • Câţi angajati are firma? • se poate utiliza ca argument în locul numelui unei coloane semnul *; • se va determina câte linii are tabelul la care se aplică funcţia respectivă M. Danubianu - Teoria si implementarea bazelor de date

  30. Funcţia SUM • Calculează suma valorilor unei coloane. • Care este valoarea totală a salariilor platite in departamentul 90? M. Danubianu - Teoria si implementarea bazelor de date

  31. Funcţia AVG • Calculează media aritmetică a unei coloane într-un tabel oarecare • Care este valoarea medie a salariilor platite in firma? M. Danubianu - Teoria si implementarea bazelor de date

  32. Gruparea tuplurilor. Clauzele GROUP BY şi HAVING • GROUP BY permite formarea grupurilor de tupluri într-o relaţie pe baza valorilor comune ale unei coloane. • asocierea unei clauze HAVING la o clauză GROUP BY face posibilă selectarea anumitor grupe de tupluri care îndeplinesc un criteriu. • Formatul general al clauzei GROUP BY este: SELECT col1, col2,..coln FROM tabel GROUP BY coloană de grupare M. Danubianu - Teoria si implementarea bazelor de date

  33. Gruparea tuplurilor. Clauzele GROUP BY şi HAVING • Care este totalul salariilor platite in fiecare departament? tabelul rezultat va aveaun număr de linii egal cu numărul departamentelor. M. Danubianu - Teoria si implementarea bazelor de date

  34. Clauza HAVING • Permite introducerea unor restricţii care sunt aplicate grupurilor de tupluri, deci nu tuplurilor individuale, aşa cum acţionează clauza WHERE. Din tabelul rezultat sunt eliminate toate tuplurile care nu satisfac condiţia dată. • Clauza HAVING lucrează împreună cu o clauză GROUP BY, fiind practic o clauză WHERE aplicată acesteia. Formatul general este: SELECT col1, col2,..coln FROM tabel GROUP BY coloană de regrupare HAVING caract eristică de grup M. Danubianu - Teoria si implementarea bazelor de date

  35. Pentru salariile platite, interesează valoarea pe fiecare departament, numai dacă această valoare este mai mare de 20000. M. Danubianu - Teoria si implementarea bazelor de date

  36. Actualizarea datelor în SQL • implică trei acţiuni posibile : • adăugarea de noi linii la cele existente într-un tabel • ştergerea unor linii din tabel • modificarea valorii unor atribute. M. Danubianu - Teoria si implementarea bazelor de date

  37. Adăugarea datelor în SQL - INSERT INSERT INTO NumeTab [(NumeCâmp1 [, NumeCâmp2, ...])]VALUES (eExpr1 [, eExpr2, ...]) INSERT INTO NumeTab FROM ARRAY Nume | FROM MEMVAR • Comanda INSERT poate fi asociată cu o subinterogare, care să furnizeze valorile care trebuie adăugate prin copiere dintr-un alt tabel INSERT INTO  NumeTab1 [(NumeCâmp1 [, NumeCâmp2, ...])] SELECT [(NumeCâmp1 [, NumeCâmp2, ...])]FROM NumeTab2 WHERE  conditii • Subinterogarea se poate utiliza  în locul unui nume de tabel în clauza INTO a   comenzii INSERT: INSERT INTO  (SELECT [(NumeCâmp1 [, NumeCâmp2, ...])] FROM NumeTab2) VALUES (eExpr1 [, eExpr2, ...]) M. Danubianu - Teoria si implementarea bazelor de date

  38. Adăugarea datelor în SQL – Exemplul 1 M. Danubianu - Teoria si implementarea bazelor de date

  39. Adăugarea datelor în SQL – Exemplul 2 M. Danubianu - Teoria si implementarea bazelor de date

  40. Adăugarea datelor în SQL – Exemplul 3introducerea valorilor speciale M. Danubianu - Teoria si implementarea bazelor de date

  41. Adăugarea datelor în SQL – Exemplul 4introducerea unei date calendaristice M. Danubianu - Teoria si implementarea bazelor de date

  42. Adăugarea datelor în SQL – Exemplul 5 Utilizarea subconsultarii pentru specificarea tabelului unde se face inserarea M. Danubianu - Teoria si implementarea bazelor de date

  43. Adăugarea datelor în SQL – Exemplul 6 Utilizarea valorilor implicite M. Danubianu - Teoria si implementarea bazelor de date

  44. Crearea unui script -1 Presupune posibilitatea introducerii de la tastatura a valorilor ce se doresc inserate M. Danubianu - Teoria si implementarea bazelor de date

  45. Crearea unui script -2 Ce se intampla daca se omite introducerea unei valori in campul job_title? M. Danubianu - Teoria si implementarea bazelor de date

  46. Crearea unui script -3utilizarea SQL Scratchpad M. Danubianu - Teoria si implementarea bazelor de date

  47. Stergerea de linii din tabel - DELETE DELETE FROM [NumeBD!]NumeTab[WHERE CondFiltru1 [AND | OR CondFiltru2 ...]] Sau în combinaţie cu subinterogari DELETE FROM [NumeBD!]NumeTab[WHERE câmp operator (SELECT câmp FROM NumeTabel WHERE condiţii)] DELETE FROM facturi    WHERE cod =        (SELECT cod        FROM agenti       WHERE nume = "ELCO S.A."); M. Danubianu - Teoria si implementarea bazelor de date

  48. Stergerea de linii din tabel - DELETE M. Danubianu - Teoria si implementarea bazelor de date

  49. Stergerea de linii din tabel - DELETE M. Danubianu - Teoria si implementarea bazelor de date

  50. Stergerea de linii din tabel - DELETE Sunt variante SQL care, la crearea unui tabel, permit descrierea acţiunii care se va derula la ştergerea unei linii ( restricţionare sau stergere cascadată).DE CE??? M. Danubianu - Teoria si implementarea bazelor de date

More Related