Diferența dintre Unde și Clauza în SQL

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 10 Mai 2024
Anonim
Diferența dintre Unde și Clauza în SQL - Tehnologie
Diferența dintre Unde și Clauza în SQL - Tehnologie

Conţinut


WHERE și clauza HAVING sunt utilizate în principal în instrucțiunile interogărilor SQL, acestea ne permit să restricționăm combinația în relația de rezultat prin utilizarea unui predicat specific. Diferența majoră între WHERE și HAVING este că clauza WHERE specifică condițiile pentru selectarea tuples (rânduri) din relații, inclusiv condițiile de unire, dacă este nevoie. Pe de altă parte, clauza HAVING specifică o condiție pe Grupuri fiind selectat mai degrabă decât pe tupluri individuale.

SQL înseamnă Limbaj de interogare structurat; este un limbaj complet sau declarativ al bazei de date utilizat pentru accesarea datelor din bazele de date.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza de comparațieUNDEAVÂND
De bazăImplementat în operații pe rând.Implementat în operațiuni cu coloane.
AplicatUn singur rândRând sau grupuri rezumate.
Preluarea datelorAcesta preia numai datele particulare din rânduri particulare în funcție de condiție.La început, datele complete sunt preluate 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, Ștergeți sau una dintre ele.Nu se poate utiliza fără o declarație SELECT.
Acționează caPre-filtruPost-filtru
A SE GRUPA CUVine după UNDE.Vine înainte de VÂRZIRE.


Definiția Where Clause

SQL Clauza UNDE este utilizat pentru a descrie o condiție în momentul preluării datelor dintr-o singură tabelă sau prin unirea cu mai multe tabele. Acesta returnează valoarea particulară din tabel numai dacă condiția dată este îndeplinită. Clauza WHERE este folosită pentru a pătrunde înregistrările și pentru a prelua doar înregistrările necesare.

SQL implementează și conexiunile logice și, sau și nu în clauza WHERE, care este cunoscută și sub denumirea de boolean condiție; condiția trebuie să fie adevărată pentru a prelua tuplurile. Operanțele expresiilor conectivilor logice implică operatori de comparație cum ar fi <, <=, >, >=, =, și <>. Acești operatori de comparație compară șiruri și expresii aritmetice. Poate fi utilizat în SELECTAȚI declarație, precum și în UPDATE, ȘTERGE declarații.


Să luăm un exemplu. Tabelul prezentat mai jos este denumit „Vânzări„Tabelul constă din„Produs' și 'Suma de vânzări'Atribute.

Următoarea interogare trebuie să fie scrisă pentru a calcula Vanzari totale de telefon și boxe.

SELECTEAZĂ Produsul, suma (suma_Vânzărilor) AS_ Total_Vânzări din vânzări UNDE produs în (telefon, difuzoare) GRUPA CU PRODUS;

Următoarea ieșire este ieșirea rezultată în care rândurile sunt filtrate mai întâi, rândurile de telefon și difuzoare sunt preluate apoi funcția de agregare este efectuată.

Definiția Have Clause

SQL oferă HAVING clauza care poate fi utilizat împreună cu A SE GRUPA CU clauză. Această clauză HAVING ajută la regăsirea valorilor pentru grupurile care îndeplinesc anumite condiții. Clauza WHERE poate fi utilizată și în combinație cu clauza HAVING în timpul selecției, clauza WHERE filtrează rândul individual. Rândurile sunt apoi grupate și sunt efectuate calcule agregate, în final clauza HAVING filtrează grupurile.

Se comportă la fel ca WHERE, atunci când nu se folosește cuvântul cheie GROUP BY. Funcțiile Grupului, cum ar fi min, max, media, sumă și număr, pot apărea doar în două clauze: clauza SELECT și HAVING. Oferă o condiție pentru tuplurile corespunzătoare fiecărei valori din grupul de atribute. Rezultatul va fi afișat singurul set de înregistrări care îndeplinește condiția.

Tot aici luăm același exemplu cu clauza WHERE și considerăm același „Vânzări' masa. Când vrem să calculăm Vanzari totale de telefon și boxe folosind clauza HAVING, vom scrie următoarea întrebare.

SELECTEAZĂ Produsul, suma (suma_Vânzărilor) AS_ Total_vânzări din GRUPA VÂNZĂRILOR PE PRODUSUL VÂNZAT Produs în (telefon, Boxe);

Interogarea produce următoarea ieșire în care produsele sunt preluate mai întâi, apoi se realizează funcția agregată (suma) și în cele din urmă grupurile sunt filtrate spre deosebire de clauza WHERE.

Când dorim să găsim doar acele produse în care Vanzari totale este mai mare de 1000. Interogarea poate fi scrisă ca:

SELECTĂ Produsul, suma (suma_vânzărilor) AS_ Total_vânzări de la GRUPA VÂNZĂRILOR PE PRODUSE SUMĂ (Vânzări_ suma)> 1000;

Produsul produs este:

Acest lucru nu poate fi efectuat folosind clauza WHERE, în ciuda HAVING și generează o eroare, deoarece clauza WHERE nu poate fi utilizată cu funcții agregate.

  1. WHERE clauza este folosită în operații pe rând și aplicată pe un singur rând, în timp ce clauza HAVING este utilizată în operațiunile cu coloane și poate fi aplicată la rânduri sau grupuri rezumate.
  2. În clauza WHERE datele dorite sunt preluate în funcție de condiția aplicată. În schimb, clauza HAVING preia date întregi, apoi separarea se face în funcție de condiție.
  3. Funcțiile de agregare precum min, sumă, max, avg nu pot apărea niciodată împreună cu clauza WHERE. Spre deosebire de aceste funcții pot apărea în clauza HAVING.
  4. Clauza HAVING nu se poate utiliza fără o instrucțiune SELECT. În schimb, WHERE poate fi folosit cu SELECT, UPDATE, DELETE etc.
  5. Clauza WHERE se comportă ca un pre-filtru în timp ce clauza HAVING acționează ca un post-filtru.
  6. Clauza WHERE atunci când este utilizată cu GROUP BY, vine înainte de GROUP BY. Aceasta înseamnă că WHERE filtrează înainte de efectuarea calculelor agregate. Pe de altă parte, HAVING vine după GROUP BY, ceea ce înseamnă că filtrează după efectuarea calculelor agregate.

Concluzie

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