|   
 Sql
 Functii SQLFunctii SQLa. Functii totalizatoare sau functii de grup COUNT  returneaza numarul inregistrarilor din tabel; SUM  returneaza suma valorilor dintr-o coloana, acceptand argumente numerice; AVG  calculeaza valoarea medie a unei coloane; MAX  returneaza elementul maxim dintr-o coloana; MIN - returneaza elementul minim dintr-o coloana; VARIANCE  returneaza dispersia abaterilor; STDDEV  determina abaterea sau deviatia standard a unei coloane de numere. b. Functii pentru data calendaristica si ora ADD MONTHS  adauga un numar de luni la o data calendaristica specificata; LAST DAY - intoarce ca rezultat ultima zi a unei luni specificate; MONTHS BETWEEN  intoarce ca rezultat numarul de linii intre luna x si luna y; NEXT TIME  rectifica ora in functie de ora teritoriului in care va aflati; NEXT DAY  gaseste ziua urmatoare; SYSDATE  returneaza ora si data calendaristica a sistemului. c. Functii aritmetice ABS  returneaza valoarea absoluta a unui numar; CEIL  returneaza cel mai mic numar intreg mai mare sau egal cu un argument; FLOOR - returneaza cel mai mare numar intreg mai mic sau egal cu un argument; COS, SIN, TAN  functii trigonometrice; COSH, SINH, TANH - functii trigonometrice hiperbolice; EXP  reprezinta e la o putere data, unde e 2,72; LN si LOG  functii logaritmice; MOD  returneaza restul impartirii a doua numere POWER  returneaza rezultatul obtinut prin ridicarea unui numar la o putere; SIGN  returneaza valorile: -1 , daca numarul este negativ; 0 , daca numarul este zero; 
 +1 , daca numarul este negativ. SQRT  reprezinta radicalul dintr-un numar dat. d. Functii caracter CHR  returneaza caracterul echivalent cu numarul folosit ca argument; CONCAT - lipeste doua siruri; INITCAP  configureaza un cuvant astfel: prima litera mare, celelalte mici; LOWER  modifica toate caracterele in litere mici; UPPER - modifica toate caracterele in litere mari; LPAD  completeaza un sir cu un anumit numar de caractere precizat; LTRIM, RTRIM  sunt folosite pentru alinierea sirurilor folosind un anumit tip de caractere; REPLACE  inlocuieste un sir incepand de la o anumita pozitie cu un alt sir; SUBSTR  va returna o parte din sirul initial; INSTR  se utilizeaza pentru a determina unde gasiti intr-un sir un anumit tipar; LENGTH  va returna lungimea unui sir; e. Functii de conversie TO_CHAR  converteste un numar intr-un caracter; TO_NUMBER  converteste un sir intr-un numar. Clauzele instructiunii SELECTClauza WHEREAceasta clauza va permite sa selectati numai anumite inregistrari pe care le doriti. Exemplu: Presupunem ca aveti o tabela in care aveti inscrisi toti angajatii existenti in firma si doriti sa gasiti rezultatele obtinute de angajatul ce are numele de familie IONASCU si prenumele GEORGE: SELECT * FROM angajati WHERE nume = IONESCU AND prenume = GEORGE; Clauza ORDER BYPentru ca rezultatele interogarii sa fie intr-o anumita ordine, vom folosi aceasta clauza intr-o instructiune SELECT. Ordinea prestabilita este cea crescatoare. Pentru afisarea rezultatelor in ordine descrescatoare se va folosi termenul DESC la sfarsitul clauzei ORDER BY. Exemplu: Pentru a ordona numele angajatilor in ordine descrescatoare, vom scrie: SELECT * FROM angajati ORDER BY nume, prenume DESC; Clauza GROUP BYAceasta clauza executa functia totalizatoare descrisa in instructiunea SELECT pentru fiecare dintre grupurile coloanei care urmeaza clauzei GROUP BY. Regula este sa nu folositi in instructiunea SELECT coloane care au mai multe valori pentru aceeasi valoare a coloanei utilizate in clauza GROUP BY. Exemplu: Presupunem ca tabela angajati mai contine si campul SECTIA in care lucreaza fiecare angajat si dorim sa vedem numarul angajatilor din fiecare sectie: SELECT sectie, COUNT(sectie) FROM angajati GROUP BY sectie; Clauza HAVINGClauza HAVING da posibilitatea formularii unor conditii de selectie la nivelul grupurilor. Aceasta clauza difera de clauza WHERE prin faptul ca prima se refera la conditii impuse gruparilor, iar cea de-a doua la conditiile referitoare la inregistrarile tabelei, care vor fi incluse in grupuri. Exemplu: Daca specificam in tabela angajati si campul SALARIU care va contine ca valori sumele primite de angajati, se cere sa se listeze sectiile care vor primi o suma de bani mai mare de 30.000.000 pentru a plati angajatii din sectia respectiva. SELECT sectia, SUM(salariu) total FROM angajati GROUP BY sectia HAVING SUM(salariu) > 30.000.000; Se observa ca s-a folosit pentru campul SUM(salariu) aliasul TOTAL. Observatie: Clauzele WHERE si ORDER BY sunt folosite de obicei in interogari care actioneaza asupra unor linii individuale, iar clauzele GROUP BY si HAVING se gasesc impreuna cu functii totalizatoare. Se poate ca rezultatele unei interogari sa fie transmise ca argumente pentru o alta interogare, dupa cum se poate observa in exemplul urmator: Exemplu: Sa se afiseze numele si functia angajatilor dintr-o firma care au aceeasi functie cu persoana care are salariul 6.000.000. SELECT nume, functie FROM angajati WHERE functie IN (SELECT functia FROM angajati WHERE salariu = 6.000.000) JonctiuniOperatiile de jonctiune lipesc tabelele. Exemplu: Fiind date tabela ANGAJAT ce contine numele, functia si vechimea angajatului si tabela PERSONAL ce contine numele, adresa si telefonul angajatilor, sa se listeze toate informatiile referitoare la angajatii unei firme din cele doua tabele. SELECT P.nume, P.adresa, P.telefon, A.functie, A.vechime FROM angajat A, personal P WHERE P.nume = A.nume ORDER BY P.nume; Se observa ca avem campul NUME comun celor doua tabele. 
 
 |