TOP

SQL-Lecția 6. Câmpuri calculate (calculate).

YouLibreCalc for Excel logo

De ce ar trebui să folosiți câmpuri calculate? De regulă, informațiile din baza de date sunt prezentate sub formă de fragmente separate, deoarece este mai ușor să structurați datele și să operați asupra lor. Cu toate acestea, deseori va trebui să folosim nu date individuale, ci informații deja combinate și procesate. De exemplu, este adesea necesar să combinați numele și prenumele clienților, să combinați elementele de adresă care se află în diferite coloane ale tabelului, să procesați text și cuvinte individuale, litere și simboluri, pentru a însuma costul total al achiziției , pentru a afișa statistici despre informațiile care se află în baza de date. Datele sunt de obicei stocate în „bucăți” separate, ceea ce necesită procesare suplimentară din partea programului client. Cu toate acestea, este posibil să primiți informații deja procesate folosind un SGBD. În acest caz, câmpurile de calcul ajută. Acestea sunt create automat atunci când interogarea este executată și au aspectul și proprietățile coloanelor obișnuite care sunt deja prezente în tabel. Singura diferență este că nu există câmpuri calculate fizic, deci nu ocupă spațiu suplimentar în DB, ci există temporar în „memoria aleatorie” a DBMS. Avantajul efectuării operațiunilor pe partea DBMS este viteza de procesare a datelor.


1. Efectuarea de operatii matematice

O modalitate de a utiliza câmpurile calculate este efectuarea de operații matematice pe datele selectate. Să luăm un exemplu despre cum se întâmplă acest lucru, folosind din nou tabelul nostru Sumproduct. Să presupunem că trebuie să calculați prețul mediu de achiziție al fiecărui produs. Pentru a face acest lucru, trebuie să redistribuiți coloana Sumă la Quantity (cantitate):

Run SQLSELECT DISTINCT Product, Amount/Quantity 
FROM Sumproduct

După cum puteți vedea, SGBD a selectat toate numele produselor și a afișat costul mediu al acestora într-o coloană separată care a fost creată în timpul executării interogării. De asemenea, puteți observa că am folosit un operator suplimentar DISTINCT, de care avem nevoie pentru a afișa nume unice de produse (fără el am avea înregistrări duplicate).

2. Folosirea pseudonimelor

În exemplul anterior, am calculat prețul mediu de achiziție al fiecărui produs și am afișat valoarea în coloana de calcul. Cu toate acestea, în viitor, va fi incomod pentru noi să ne referim la acest câmp, deoarece numele lui nu este informativ pentru noi (SGBD a dat numele câmpului - Expr1001). Cu toate acestea, putem denumi câmpul independent, specificând numele său în interogare în prealabil, adică dând un alias. Să rescriem exemplul anterior și să specificăm un alias pentru câmpul calculat:

Run SQLSELECT DISTINCT Product, Amount/Quantity AS AvgPrice 
FROM Sumproduct

Vedem că câmpul nostru de calcul a primit propriul său nume AvgPrice. Pentru aceasta, am folosit operatorul AS, după care am specificat numele de care aveam nevoie. Trebuie remarcat faptul că în SQL sunt suportate doar operațiunile matematice de bază: adunarea (+), scăderea (-), înmulțirea (*), împărțirea (/). De asemenea, puteți utiliza paranteze rotunde pentru a schimba succesiunea operațiilor.

Aliasurile sunt adesea folosite nu numai pentru a denumi câmpurile de calcul, ci și pentru a le redenumi pe cele active. Acest lucru poate fi necesar dacă câmpul activ are un nume lung sau numele nu este suficient de informativ.

3. Conectarea câmpurilor (concatenare)

Pe lângă operațiile matematice, putem, de asemenea, să combinăm text și să îl afișam într-un câmp separat. Să luăm în considerare modul în care puteți lipi (concatena) text. Pentru a conecta text din diferite coloane în MS Access, se folosește operatorul plus (+), de exemplu:

Run SQLSELECT Month + ' ' + Product AS NewField, Quantity  
FROM Sumproduct

În acest exemplu, am combinat valorile în două coloane și am afișat rezultatul într-un nou câmp NewField.

Operatorul plus (+) nu este acceptat în dialectul MySQL pentru conectarea (concatenarea) textului din mai multe coloane. În acest caz, utilizați funcția CONCAT().