Anbefalet, 2024

Redaktørens Valg

Forskel mellem hvor og har klausul i SQL

WHERE and HAVING-klausul bruges hovedsagelig i SQL-forespørgslen, der tillader os at begrænse kombinationen i resultatforholdet ved at bruge et bestemt prædikat. Den væsentligste forskel mellem WHERE og HAVING er, at WHERE-klausulen angiver betingelserne for valg af tuples (rækker) fra relationerne, herunder tilslutningsbetingelser, hvis det er nødvendigt. På den anden side angiver HAVING-klausul en betingelse for de grupper, der vælges, snarere end på individuelle tupler.

SQL står for Structured Query Language ; Det er omfattende eller erklærende databasesprog, der bruges til at få adgang til data fra databaserne.

Sammenligningstabel

Grundlag for sammenligningHVORAT HAVE
GrundlæggendeImplementeret i rækkeoperationer.Implementeret i kolonneoperationer.
Anvendt tilEnkelt rækkeSammenfattet række eller grupper.
Data hentningDen henter kun de specifikke data fra bestemte rækker i henhold til betingelsen.I første omgang hentes fuldstændige data, separeres derefter i henhold til betingelsen.
Samlede funktionerKan ikke vises i WHERE-klausulen.Kan vises i HAVING-klausul.
Anvendes medSELECT og andre udsagn som UPDATE, DELETE eller en af ​​dem.Kan ikke bruges uden SELECT-sætning.
Handle somForfilterPost-filter
GROUP BYKommer efter hvor.Kommer efter at have.

Definition af Hvor Klausul

SQL WHERE-klausulen bruges til at beskrive en tilstand på tidspunktet for hentning af data fra et enkelt bord eller ved at slutte sig til flere tabeller. Det returnerer kun den særlige værdi fra bordet, hvis den givne betingelse er opfyldt. WHERE klausul bruges til at gennemsyre arkiverne og hente kun de nødvendige optegnelser.

SQL implementerer også de logiske forbindelser og, eller og ikke i WHERE-klausulen, der også er kendt som den boolske tilstand; betingelsen skal være sand til at hente tupler. Operandene i de logiske forbindelsesudtryk indbefatter sammenligningsoperatørerne som <, <=, >, > =, = og> . Disse sammenligningsoperatører sammenligner strenge og aritmetiske udtryk. Det kan bruges i SELECT- sætningen, såvel som i UPDATE, DELETE statements.

Lad os tage et eksempel. Tabellen, der er vist nedenfor, kaldet ' Salg ', består af ' Produkt ' og ' Salg_amount ' attributter.

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

 SELECT Product, sum (Sales_amount) AS Total_sales FRA SALG HVOR Produkt i ('Telefon', 'Højttalere') GROUP BY PRODUCT; 

Efter output er det resulterende output, hvor rækkerne filtreres først, telefon- og højttalerrader hentes, så den samlede funktion udføres.

Definition af at have klausul

SQL indeholder HAVING-klausul, som kan bruges sammen med GROUP BY- klausulen. Denne HAVING-klausul hjælper med at hente værdierne for de grupper, der opfylder visse betingelser. HVOR klausul kan også bruges i forbindelse med HAVING-klausul under valg, WHERE-klausulen filtrerer den enkelte række. Rækkerne grupperes derefter, og aggregatberegninger udføres, til sidst HAVING clause filtrerer grupperne.

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

Her har vi også det samme eksempel som WHERE-klausul og i betragtning af det samme salgssal . Når vi vil beregne Totalsalg af telefon og højttalere ved brug af HAVING-klausul, skriver vi følgende spørgsmål.

 SELECT Product, sum (Sales_amount) AS Total_sales FRA SALGGRUPPE AF PRODUKT, der har produkt i ('telefon', 'højttalere'); 

Forespørgslen producerer følgende output, hvor produkterne hentes først, derefter udføres aggregatfunktion (sum), og til sidst grupper filtreres 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 (Salg_amount) AS Total_salg FRA SALGGRUPPE AF PRODUKT HAVING sum (Salgsmængde)> 1000; 

Den producerede produktion er:

Dette kan ikke udføres med WHERE-klausul på trods af HAVING, og det genererer en fejlmeddelelse, fordi WHERE-klausulen ikke kan bruges sammen med aggregatfunktioner.

Nøgleforskelle mellem hvor og med klausul

  1. WHERE klausul er anvendt i rækkeoperationer og anvendes på en enkelt række, mens HAVING-klausul anvendes i kolonneoperationer og kan anvendes på opsummerede rækker eller grupper.
  2. I WHERE-klausulen hentes de ønskede data i overensstemmelse med den anvendte tilstand. I modsætning hertil HAVING-klausul henter hele data, så adskilles der ifølge betingelsen.
  3. Samlede funktioner som min, sum, max, avg kan aldrig vises sammen med WHERE-klausulen. Imidlertid kan disse funktioner vises i HAVING-klausul.
  4. HAVING-klausul kan ikke bruges uden en SELECT-sætning. Omvendt kan WHERE bruges med SELECT, UPDATE, DELETE osv.
  5. Hvor klausul opfører sig som et forfilter, mens HAVING-klausul virker som et postfilter.
  6. WHERE klausul, når den bruges med GROUP BY, kommer før GROUP BY. Dette betyder at WHERE filterrækker før aggregatberegninger udføres. På den anden side kommer HAVING efter GROUP BY, hvilket betyder, at det filtre efter aggregatberegninger udføres.

Konklusion

WHERE og HAVING-klausulen virker på samme måde, undtagen den ekstra funktion, som HAVING-klausulen er populær for. HAVING-klausulen kan effektivt arbejde med aggregatfunktioner, mens WHERE ikke kan betjenes med aggregatfunktioner.

Top