TOP

SQL-Lecția 7. Funcții de prelucrare a datelor

Ca în majoritatea limbajelor de programare, SQL are funcții pentru procesarea datelor. Este de remarcat faptul că, spre deosebire de instrucțiunile SQL, funcțiile nu sunt standardizate pentru toate tipurile de SGBD, adică pentru a efectua aceleași operațiuni asupra datelor, diferite SGBD-uri au propriile nume de funcție. Aceasta înseamnă că codul de interogare scris într-un SGBD poate să nu funcționeze în altul, iar acest lucru trebuie luat în considerare în viitor. Acest lucru se aplică în principal funcțiilor pentru procesarea valorilor textului, conversia tipurilor de date și manipularea datelor.


Majoritatea SGBD-urilor acceptă un set standard de tipuri de funcții, și anume:

  • Funcții de text utilizate pentru procesarea textului (extragerea unei părți a caracterelor din text, determinarea lungimii textului, conversia caracterelor în litere mari sau mici...);
  • Funcții numerice. Sunt folosite pentru a efectua operatii matematice asupra valorilor numerice;
  • Funcții de dată și oră (se efectuează manipulări de dată și oră, se calculează perioada dintre date, se verifică corectitudinea datelor etc.);
  • Funcții statistice (pentru calculul valorilor maxime/minime, valorilor medii, calculul cantității și sumei...);
  • Funcții de sistem (furnizează diverse tipuri de informații despre servicii despre DBMS, utilizator etc.).
  • 1. Funcții SQL pentru procesarea textului

    Implementarea SQL în MS Access are următoarele funcții pentru procesarea textului:

    Funcţie Descriere
    Left() Selectează caracterele din text din stânga
    Right() Selectează caracterele din textul din dreapta
    Mid() Selectează caractere din mijlocul textului
    UCase() Convertește caracterele în majuscule
    LCase() Convertește caracterele în minuscule
    LTrim() Elimină toate caracterele goale din stânga textului
    RTrim() Elimină toate caracterele goale din dreapta textului
    Trim() Elimină toate caracterele goale de pe ambele părți ale textului

    Să convertim numele produselor în majuscule folosind funcția UCase():

    Run SQLSELECT Product, UCase(Product) AS Product_UCase 
    FROM Sumproduct
    

    Să evidențiem primele trei caractere din text folosind funcția LEFT():

    Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT 
    FROM Sumproduct
    

    2. Funcții SQL pentru procesarea numerelor

    Funcțiile de procesare a numărului sunt concepute pentru a efectua operații matematice pe date numerice. Aceste funcții sunt concepute pentru calcule algebrice și geometrice, deci sunt utilizate mult mai rar decât funcțiile de procesare a datei și orei. Cu toate acestea, funcțiile numerice sunt cele mai standardizate în toate versiunile de SQL. Să ne uităm la lista de funcții numerice:

    Funcţie Descriere
    SQR() Returnează rădăcina pătrată a numărului specificat
    ABS() Returnează valoarea absolută a unui număr
    EXP() Returnează exponentul numărului specificat
    SIN() Returnează sinusul unghiului specificat
    COS() Returnează cosinusul unghiului specificat
    TAN() Returnează tangenta unghiului specificat

    Am enumerat doar câteva dintre caracteristicile principale, dar puteți oricând să consultați documentația DBMS pentru o listă completă a caracteristicilor acceptate cu descrieri detaliate.

    De exemplu, să scriem o interogare pentru a obține rădăcina pătrată a numerelor din coloana Sumă folosind funcția SQR():

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    MySQL folosește funcția SQRT() pentru a obține rădăcina pătrată a unui număr.

    3. Funcții SQL pentru procesarea datei și orei

    Funcțiile de manipulare a datei și orei sunt printre cele mai importante și utilizate frecvent funcții SQL. În bazele de date, valorile datei și orei sunt stocate într-un format special, astfel încât nu pot fi utilizate direct fără procesare suplimentară. Fiecare SGBD are propriul set de funcții pentru procesarea datelor, ceea ce, din păcate, nu permite transferul acestora pe alte platforme și implementări SQL.

    Lista unor funcții pentru gestionarea datei și orei în MS Access:

    Funcţie Descriere
    DatePart() Returnează o parte dintr-o dată: an, trimestru, lună, săptămână, zi, oră, minut, secundă
    Year(), Month() Returnează anul și respectiv luna
    Hour(), Minute(), Second() Returnează ora, minutele și secundele datei specificate
    WeekdayName() Returnează numele zilei săptămânii

    Să ne uităm la un exemplu despre cum funcționează funcția DatePart():

    SELECT Date1, DatePart("m", Date1) AS Month1 
    FROM Sumproduct
    

    Funcția DatePart() are un parametru suplimentar care ne permite să afișăm partea necesară a datei. În exemplu, am folosit valoarea parametrului "m", care afișează numărul lunii (în același mod, putem afișa anul - "aaaa", trimestrul - "q", ziua - "d", săptămâna - "w", ora - "h", minutele - "n", secundele - "s", etc.).

    4. Funcții statistice SQL

    Funcțiile statistice ne ajută să pregătim date fără a le eșantiona. Interogările SQL cu aceste funcții sunt adesea folosite pentru a analiza și genera diferite rapoarte. Un exemplu de astfel de selecții poate fi: determinarea numărului de rânduri dintr-un tabel, obținerea sumei valorilor pentru un anumit câmp, căutarea celei mai mari/mai mici sau a valorii medii în coloana specificată a tabelului. De asemenea, menționăm că funcțiile statistice sunt acceptate de toate SGBD fără modificări speciale în scris.

    Lista funcțiilor statistice din DBMS Access:

    Funcţie Descriere
    COUNT() Returnează numărul de rânduri dintr-un tabel sau coloană
    SUM() Returnează suma valorilor dintr-o coloană
    MIN() Returnează cea mai mică valoare dintr-o coloană
    MAX() Returnează cea mai mare valoare dintr-o coloană
    AVG() Returnează valoarea medie într-o coloană

    4.1 Exemple de utilizare a funcției COUNT().

    Returnează numărul tuturor rândurilor din tabel:

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    Returnează numărul tuturor rândurilor nevide din câmpul Produs:

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    Am eliminat în mod intenționat o valoare din coloana Produs pentru a arăta diferența de performanță dintre cele două interogări.

    4.2 Exemple de utilizare a funcției SUM().

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    Cu această solicitare am afișat cantitatea totală de mărfuri vândute în luna aprilie.

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

    După cum puteți vedea, în funcțiile statistice putem efectua și calcule pe mai multe coloane folosind operatori matematici standard.

    4.3 Exemplu de utilizare a funcției MIN().

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 Exemplu de utilizare a funcției MAX().

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 Exemplu de utilizare a funcției AVG()

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct