Home » Articole » Articole » Calculatoare » Programare » SQL » SQL – Limbajul de interogare a datelor – SELECT – Proiecție

SQL – Limbajul de interogare a datelor – SELECT – Proiecție

postat în: SQL 0
SELECT   <things_to_be_displayed>  -- așa-numita „Proiecție” - în principal o listă de nume de coloane
FROM     <tablename>               -- nume de tabel sau de vizualizare și aliasurile acestora
WHERE    <where_clause>            -- așa-numita „Restricție” sau „condiție de căutare”
GROUP BY <group_by_clause>
HAVING   <having_clause>
ORDER BY <order_by_clause>
OFFSET   <offset_clause>
FETCH    <fetch_first_or_next_clause>;

Cu excepția primelor două elemente, toate celelalte sunt opționale. Succesiunea elementelor de limbaj este obligatorie. În anumite locuri din cadrul comenzii pot porni noi comenzi SELECT – într-o manieră recursivă.

Proiecție (specificare coloanele rezultate)

În partea de proiecție a comenzii SELECT, specificați o listă de coloane, operații care lucrează pe coloane, funcții, valori fixe sau comenzi SELECT noi.

-- C/Comentariile în stilul Java sunt posibile în cadrul comenzilor SQL
SELECT id,                          /* numele unei coloane   */
       concat(firstname, lastname), /* funcția concat() */
       weight + 5,                  /* operația de adăugare      */
       'kg'                         /* o valoare                */
FROM   person;

SGBD va prelua zece rânduri, fiecare dintre ele constând din patru coloane.

Putem amesteca secvența de coloane în orice ordine sau le putem prelua de mai multe ori.

SELECT id, lastname, lastname, 'weighs', weight, 'kg'
FROM   person;

Asteriscul ‘*’ este o abreviere pentru lista tuturor coloanelor.

SELECT * FROM person;

Pentru coloanele numerice, putem aplica operatorii numerici obișnuiți +, -, * și /. Există, de asemenea, o mulțime de funcții predefinite în funcție de tipul de date: putere, sqrt, modulo, funcții șir, funcții de dată.

Unicitate prin cuvântul cheie DISTINCT

Este posibil să compactați rezultatul în sensul valorilor unice folosind cuvântul cheie DISTINCT. În acest caz, toate rândurile rezultate, care ar fi identice, vor fi comprimate într-un singur rând. Cu alte cuvinte: duplicatele sunt eliminate – la fel ca în teoria mulțimilor.

-- preia zece rânduri
SELECT lastname
FROM   person;
-- preia doar șapte rânduri. Valorile duplicat sunt aruncate.
SELECT DISTINCT lastname
FROM   person;
-- Sfat:
-- Cuvântul cheie „DIstinct” se referă la totalitatea rândurilor rezultate, pe care le puteți imagina 
-- ca o concatenare a tuturor coloanelor. Urmează direct în spatele cuvântului cheie SELECT.
-- Următoarea interogare duce la zece rânduri, deși trei persoane au același nume de familie.
SELECT DISTINCT lastname, firstname
FROM   person;
-- din nou doar șapte rânduri
SELECT DISTINCT lastname, lastname
FROM   person;

Aliasuri pentru numele coloanelor

Uneori dorim să dăm coloanelor rezultate nume mai descriptive. Putem face acest lucru alegând un alias în cadrul proiecției. Acest alias este noul nume din setul de rezultate. GUI-urile arată aliasul ca etichetă de coloană.

-- Cuvântul cheie „AS” este opțional
SELECT lastname AS family_name, weight AS weight_in_kg
FROM   person;

Funcții

Există funcții predefinite pentru utilizare în proiecții (și în alte poziții). Cele mai frecvent utilizate sunt:

  • count(<columnname>|’*’): Numără numărul de rânduri rezultate.
  • max(<columnname>): Cea mai mare valoare din <column> a setului de rezultate. Aplicabil si pe șiruri.
  • min(<columnname>): Cea mai mică valoare din <column> a setului de rezultate. Aplicabil si pe șiruri.
  • sum(<columnname>): Suma tuturor valorilor dintr-o coloană numerică.
  • avg(<columnname>): Media unei coloane numerice.
  • concat(<columnname_1>, <columnname_2>): Concatenarea a două coloane. Alternativ, funcția poate fi exprimată prin operatorul „||” : <columnname_1> || <columnname_2>

SQL standard și fiecare SGBD oferă mult mai multe funcții.

Trebuie să facem diferența între acele funcții care returnează o valoare pe rând, cum ar fi concat() și cele care returnează doar un rând pe un set de rezultate complet, cum ar fi max(). Primul poate fi amestecat în orice combinație cu nume de coloane, așa cum se arată în primul exemplu al acestei pagini. Cu cele mai recente, există o problemă: dacă le amestecăm cu un nume de coloană obișnuit, SGBD recunoaște o contradicție în interogare. Pe de o parte, ar trebui să recupereze exact o valoare (într-un rând), iar pe de altă parte, ar trebui să recupereze o mulțime de valori (într-o mulțime de rânduri). Reacția SGBD diferă de la furnizor la furnizor. Unii aruncă un mesaj de eroare în timpul execuției – în conformitate cu standardul SQL -, alții oferă rezultate suspecte.

-- merge bine
SELECT lastname, concat(weight, ' kg')
FROM   person;
-- verificați reacția SGBD-ului dvs. Ar trebui să arate un mesaj de eroare.
SELECT lastname, avg(weight)
FROM   person;
-- un amestec legal de funcții rezultând într-un rând cu 4 coloane
SELECT min(weight), max(weight), avg(weight) as average_1, sum(weight) / count(*) as average_2
FROM   person;

SELECT în SELECT

Dacă vrem cu adevărat să vedem rezultatul unei funcții orientate pe set de rezultate în combinație cu coloane de mai mult de un rând, putem începe un SELECT foarte nou într-o locație în care – în cazuri simple – apare un nume de coloană. Acest al doilea SELECT este o comandă absolut independentă. Fiți atenți: va fi executat pentru fiecare rând rezultat al primului SELECT!

-- preia 10 rânduri; observați paranteza suplimentară pentru a delimita cele două SELECT unul de celălalt.
SELECT lastname, (SELECT avg(weight) FROM person)
FROM   person;
-- Calculează procentul greutății fiecărei persoane în raport cu greutatea medie a tuturor persoanelor
SELECT lastname,
       weight,
       weight * 100 / (SELECT avg(weight) FROM person) AS percentage_of_average
FROM   person;

(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)

Ghid pagini Facebook – Campanii de promovare pe Facebook
Ghid pagini Facebook – Campanii de promovare pe Facebook

Paginile Facebook sunt cea mai simplă modalitate de a dezvolta o afacere online. Sunt gratuite, relativ ușor de configurat, și foarte flexibile. Indiferent dacă vrei să vinzi un produs sau un serviciu, sau să promovezi o organizaţie, o idee sau … Citeşte mai mult

Nu a fost votat $3.99 Selectează opțiunile
Ghid Facebook pentru utilizatori
Ghid Facebook pentru utilizatori

Facebook este, de departe, cea mai cunoscută reţea socială, care permite utilizatorilor înregistraţi să îşi creeze profiluri proprii, să încarce şi să partajeze cu prietenii fotografii şi clipuri video, să trimită mesaje şi să păstreze legătura cu prietenii, familia şi … Citeşte mai mult

Nu a fost votat $1.99$3.39 Selectează opțiunile
Business intelligence și analitica în afaceri
Business intelligence și analitica în afaceri

Datele sunt fapte și cifre brute, iar informațiile sunt date semnificative care ar fi utile pentru o persoană sau companie. Business intelligence extrage informații din datele brute prin instrumente precum mineritul datelor, analiza perspectivală, procesarea analitică online etc. Cartea va oferi … Citeşte mai mult

Nu a fost votat $4.99$10.99 Selectează opțiunile

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *