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