Forskellen mellem hvor og at have klausul i SQL

Forfatter: Laura McKinney
Oprettelsesdato: 1 April 2021
Opdateringsdato: 3 Juli 2024
Anonim
The 11-Year-Old Moroccan who speaks English, C++, SQL, Python and now learning German
Video.: The 11-Year-Old Moroccan who speaks English, C++, SQL, Python and now learning German

Indhold


HVOR og HAVING-klausulen hovedsageligt bruges i opgørelsen af ​​SQL-forespørgsler, disse tillader os at begrænse kombinationen i resultatforholdet ved hjælp af et specifikt predikat. Den største forskel mellem WHERE og HAVING er, at WHERE-klausulen specificerer betingelserne for at vælge tuples (rækker) fra relationer, inklusive sammenkædningsbetingelser, hvis nødvendigt. På den anden side angiver HAVING-klausulen en betingelse på grupper bliver valgt snarere end på individuelle tupler.

SQL står for Struktureret forespørgselssprog; det er omfattende eller deklarativt databasesprog, der bruges til at få adgang til dataene fra databaserne.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel

Grundlag for sammenligningHVORAT HAVE
GrundlæggendeImplementeret i rækkeoperationer.Implementeret i kolonnehandlinger.
Anvendt tilEnkelt rækkeResumé af række eller grupper.
Data hentningDet henter kun de bestemte data fra bestemte rækker i henhold til betingelsen.Først hentes komplette data og adskilles derefter i henhold til betingelsen.
Samlede funktionerKan ikke vises i WHERE-klausulen.Kan vises i HAVING-klausulen.
Brugt medVÆLG og andre udsagn som UPDATE, DELETE eller en af ​​dem.Kan ikke bruges uden SELECT-sætning.
Handle somForfilterPost-filter
KONSERNE AFKommer efter HVOR.Kommer før HAVING.


Definition af hvor klausul

SQL HVOR klausul bruges til at beskrive en tilstand på tidspunktet for hentning af dataene fra en enkelt tabel eller ved sammenføjning med flere tabeller. Den returnerer kun den bestemte værdi fra tabellen, hvis den givne betingelse er opfyldt. WHERE-klausul bruges til at gennemsyre posterne og kun hente de nødvendige poster.

SQL implementerer også de logiske forbindelser og, eller og ikke i WHERE-klausulen, der også er kendt som boolean tilstand; betingelsen skal være sandt for at hente tuplerne. Operanderne i de logiske forbindelsesudtryk involverer sammenligningsoperatører såsom <, <=, >, >=, =, og <>. Disse sammenligningsoperatører sammenligner strenge og aritmetiske udtryk. Det kan bruges i VÆLG erklæring såvel som i UPDATE, SLET udsagn.


Lad os tage et eksempel. Nedenstående tabel kaldet 'Salg'Tabel består af'Produkt‘Og‘Salgsbeløb' egenskaber.

Følgende forespørgsel skal skrives for at beregne Total_sales af telefon og højttalere.

VÆLG Produkt, sum (Salg_beløb) SOM Total_salg FRA Salg HVOR Produkt i (telefon, højttalere) KONCERNEN VARIGE PRODUKT;

Følgende output er den resulterende output, hvor rækkerne først filtreres, telefon- og højttalerrader hentes, hvorefter den samlede funktion udføres.

Definition af at have klausul

SQL leverer HAVING klausul som kan bruges sammen med KONSERNE AF klausul. Denne HAVING-klausul hjælper med at hente værdierne for de grupper, der opfylder visse betingelser. WHERE-klausul kan også bruges i forbindelse med HAVING-klausul under valg, WHERE-bestemmelsen filtrerer den enkelte række. Rækkerne grupperes derefter, og samlede beregninger udføres, til sidst HAVING-bestemmelse filtrerer grupperne.

Det opfører sig på samme måde som HVOR når nøgleord GROUP BY ikke bruges. Gruppefunktionerne såsom min, max, avg, sum og count kan kun vises i to klausuler: SELECT og HAVING. Det giver en betingelse på tuplerne svarende til hver værdi i gruppen af ​​attributter. Det eneste sæt poster, der opfylder betingelsen, vises som resultatet.

Her tager vi også det samme eksempel som WHERE-klausulen og overvejer den samme 'Salg' bord. Når vi ønsker at beregne Total_sales af telefon og højttalere ved hjælp af HAVING-klausul, skriver vi følgende forespørgsel.

VÆLG Produkt, sum (Salg_beløb) AS Total_salg FRA Salgsgruppe efter produkt, der har produkt i (telefon, højttalere);

Forespørgslen producerer følgende output, hvor produkterne hentes først, derefter udføres samlet funktion (sum) og omsider filtreres grupper i modsætning til WHERE-bestemmelsen.

Når vi kun vil finde de produkter, hvor Total_sales er større end 1000. Forespørgslen kan skrives som:

VÆLG Produkt, sum (Salgs_beløb) AS Total_salg FRA Salgsgruppe efter produkt HAVING sum (Salg_beløb)> 1000;

Det producerede output er:

Dette kan ikke udføres ved hjælp af WHERE-klausul på trods af HAVING, og det genererer en fejl, fordi WHERE-klausul ikke kan bruges med samlede funktioner.

  1. WHERE-klausul anvendes i rækkeoperationer og anvendes på en enkelt række, hvorimod HAVING-klausul bruges i kolonneoperationer og kan anvendes på sammenfattede rækker eller grupper.
  2. I WHERE-klausul hentes de ønskede data i henhold til den anvendte betingelse. I modsætning hertil henter HAVING-klausul hele data, hvorefter adskillelse udføres i henhold til betingelsen.
  3. Samlede funktioner som min, sum, maks, gennemsnit kan aldrig vises sammen med WHERE-klausul. I modsætning hertil kan disse funktioner vises i HAVING-leddet.
  4. HAVING-klausul kan ikke bruges uden en SELECT-erklæring. Omvendt, HVOR kan bruges med SELECT, UPDATE, DELETE osv.
  5. HVOR klausul opfører sig som et forfilter, mens HAVING-klausulen fungerer som et postfilter.
  6. HVOR klausul, når det bruges sammen med GROUP BY, kommer foran GROUP BY. Dette betyder, at HVOR filterrækker, før der udføres samlede beregninger. På den anden side kommer HAVING efter GROUP BY, hvilket betyder, at det filtreres efter, at der er udført samlede beregninger.

Konklusion

WHERE og HAVING-klausulen fungerer på samme måde undtagen den ekstra funktion, som HAVING-klausulen er populær til. HAVING-klausul kan effektivt arbejde med samlede funktioner, mens HVOR ikke kan betjenes med aggregerede funktioner.