Recomandat, 2024

Alegerea Editorului

Diferența dintre locație și clauză în SQL

Clauzele WHERE și HAVING sunt utilizate în principal în instrucțiunile de interogări SQL, acestea ne permit să restricționăm combinația în relația rezultat folosind un predicat specific. Diferența majoră dintre WHERE și HAVING este aceea că clauza WHERE specifică condițiile pentru selectarea nodurilor (rândurilor) din relații, inclusiv a condițiilor de îmbinare dacă este necesar. Pe de altă parte, clauza HAVING specifică o condiție pentru grupurile selectate mai degrabă decât pentru tuple individuale.

SQL reprezintă limbajul Structured Query ; este o limbă de baze de date cuprinzătoare sau declarativă utilizată pentru accesarea datelor din bazele de date.

Diagramă de comparație

Bazele de comparațieUNDEAVÂND
De bazăImplementat în operațiuni de rând.Implementat în operațiile coloanei.
AplicatUn singur rândSumar rând sau grupuri.
Încărcarea datelorRealizează numai datele specifice din anumite rânduri în funcție de condiție.La început, datele complete sunt extrase, apoi separate, în funcție de condiție.
Funcții agregateNu poate apărea în clauza WHERE.Poate apărea în clauza HAVING.
Folosit cuSELECT și alte declarații, cum ar fi UPDATE, DELETE sau oricare dintre ele.Nu se poate folosi fără o instrucțiune SELECT.
Acționează caPre-filtruPost-filtru
A SE GRUPA CUVine după WHERE.Vine după HAVING.

Definiția Where Clause

Clauza SQL WHERE este folosită pentru a descrie o condiție în momentul recuperării datelor dintr-un singur tabel sau prin aderarea la mai multe tabele. Aceasta returnează valoarea din tabel numai dacă condiția dată este îndeplinită. Clauza WHERE este folosită pentru a pătrunde în înregistrări și pentru a recupera numai înregistrările necesare.

SQL implementează, de asemenea, conectorii logici și, sau nu în clauza WHERE, care este, de asemenea, cunoscută sub numele de condiție booleană ; condiția trebuie să fie adevărată pentru a prelua tuplurile. Operanzii expresiilor conectivității logice implică operatorii de comparare precum <, <=, >, > =, = și . Acești operatori de comparare compară șirurile și expresiile aritmetice. Acesta poate fi folosit în instrucțiunea SELECT, precum și în instrucțiunile UPDATE, DELETE .

Să luăm un exemplu. Tabelul prezentat mai jos, denumit tabel " Vânzări ", constă din atributele " Product " și " Sales_amount ".

Următoarea interogare va fi scrisă pentru a calcula Total_sales-ul telefonului și al difuzoarelor.

 SELECTAREA produsului, suma (Sales_amount) AS Total_sales FROM Sales WHERE Produs in ('Telefon', 'Speakers') GROUP BY Product; 

În urma ieșirii este ieșirea rezultată în care rândurile sunt filtrate mai întâi, rândurile de telefon și de difuzor sunt preluate, atunci se efectuează funcția agregată.

Definiția Having Clause

SQL oferă clauza HAVING care poate fi utilizată în conjuncție împreună cu clauza GROUP BY . Această clauză HAVING ajută la extragerea valorilor pentru grupurile care îndeplinesc anumite condiții. Clauza WHERE poate fi utilizată și în conjuncție cu clauza HAVING în timpul selecției, clauza WHERE filtrează rândul individual. Rândurile sunt apoi grupate, iar calculele agregate sunt executate, în final clauza HAVING filtrează grupurile.

Se comportă la fel ca și în cazul în care când cuvântul cheie GROUP BY nu este utilizat. Funcțiile grupului, cum ar fi min, max, avg, sumă și număr, pot apărea numai în două clauze: clauza SELECT și HAVING. Acesta oferă o condiție pe tuplurile corespunzătoare fiecărei valori din grupul de atribute. Singurul set de înregistrări care satisface condiția va fi afișat ca rezultat.

Aici, de asemenea, luăm același exemplu ca clauza WHERE și considerăm același tabel " Vânzări ". Când vrem să calculeză Total_sales de telefon și difuzoare folosind clauza HAVING, vom scrie următoarea interogare.

 SELECT produsul, suma (Sales_amount) AS Total_sales din grupul de vânzări după produs HAVING produs în ("telefon", "vorbitori"); 

Interogarea produce următoarea ieșire în care produsele sunt recuperate mai întâi, apoi se efectuează funcția agregată (suma) și ultimele grupuri sunt filtrate spre deosebire de clauza WHERE.

Când vrem să găsim numai acele produse în care Total_sales este mai mare de 1000. Interogarea poate fi scrisă ca:

 SELECTAREA produsului, sumă (Suma vânzărilor) AS Total_sales din grupul de vânzări GROUP BY Product Suma HAVING (Suma vânzărilor)> 1000; 

Producția produsă este:

Acest lucru nu poate fi executat utilizând clauza WHERE în ciuda HAVING și generează un mesaj de eroare deoarece clauza WHERE nu poate fi utilizată cu funcții agregate.

Diferențele cheie între locul și clauza

  1. Clauza WHERE este folosită în operațiile rând și aplicată pe un singur rând, în timp ce clauza HAVING este folosită în operațiile coloanei și poate fi aplicată la rândurile sau grupurile sumare.
  2. În clauza WHERE se obțin datele dorite în funcție de condițiile aplicate. În schimb, clauza HAVING aduce datele întregi, apoi separarea se face în funcție de condiție.
  3. Funcțiile agregate precum min, sum, max, avg nu pot apărea împreună cu clauza WHERE. În schimb, aceste funcții pot apărea în clauza HAVING.
  4. Clauza HAVING nu poate fi folosită fără o instrucțiune SELECT. În schimb, WHERE poate fi utilizat cu SELECT, UPDATE, DELETE, etc.
  5. Clauza WHERE se comportă ca un filtru în timp ce clauza HAVING acționează ca un filtru post-filtru.
  6. Clauza WHERE atunci când este utilizată cu GROUP BY, este înaintea GROUP BY. Aceasta înseamnă că rândurile WHERE de filtrare înainte de efectuarea calculelor agregate. Pe de altă parte, HAVING vine după GROUP BY, ceea ce înseamnă că se filtrează după efectuarea calculelor agregate.

Concluzie

Clauza WHERE și HAVING funcționează în același mod, cu excepția caracteristicii suplimentare pe care clauza HAVING este populară. Clauza HAVING poate lucra eficient cu funcțiile agregate în timp ce nu poate fi operată cu funcții agregate.

Top