Anbefalt, 2024

Redaksjonens

Forskjellen mellom hvor og har klausul i SQL

WHERE og HAVING-klausulen brukes hovedsakelig i setningen av SQL-spørringer. Disse tillater oss å begrense kombinasjonen i resultatrelasjonen ved å bruke et bestemt predikat. Den største forskjellen mellom WHERE og HAVING er at WHERE-klausulen spesifiserer betingelsene for å velge tuples (rader) fra relasjonene, inkludert tilmeldingsforhold hvis det er nødvendig. På den annen side spesifiserer HAVING-klausul en tilstand på gruppene som velges i stedet for på individuelle tuples.

SQL står for Structured Query Language ; Det er omfattende eller declarative database språk som brukes til å få tilgang til data fra databasene.

Sammenligningstabel

Grunnlag for sammenligningHVORHAR
grunn~~POS=TRUNCImplementert i radoperasjoner.Implementert i kolonneoperasjoner.
PåføresEnkelt radOppsummert rad eller grupper.
DatainsamlingDen henter bare bestemte data fra bestemte rader i henhold til tilstanden.I første omgang hentes komplette data, deretter separeres i henhold til tilstanden.
Aggregate FunksjonerKan ikke vises i WHERE-klausulen.Kan vises i HAVING-klausul.
Brukes medSELECT og andre setninger som UPDATE, DELETE eller en av dem.Kan ikke brukes uten SELECT-setning.
Oppfør deg somPre-filterPost-filter
GRUPPE AVKommer etter hvorKommer etter å ha.

Definisjon av Hvor Klausul

SQL WHERE-klausulen brukes til å beskrive en tilstand ved tidspunktet for henting av data fra et enkelt bord eller ved å bli med flere tabeller. Den returnerer bare den spesielle verdien fra bordet hvis den oppgitte tilstanden er oppfylt. WHERE klausul brukes til å gjennomsyre arkene og bare hente de nødvendige postene.

SQL implementerer også de logiske forbindelsene og, eller og ikke i WHERE-klausulen, som også er kjent som den boolske tilstanden; tilstanden må være sann for å hente tuplene. Operandene til de logiske forbindelsesuttrykkene innebærer sammenligningsoperatører som <, <=, >, > =, =, og . Disse sammenligningsoperatørene sammenligner strenger og aritmetiske uttrykk. Den kan brukes i SELECT- setningen, samt i UPDATE, DELETE statements.

La oss ta et eksempel. Tabellen som vises under navnet ' Salg ' består av ' Product ' og ' Sales_amount ' attributter.

Følgende spørring skal skrives for å beregne Totalsalg av telefon og høyttalere.

 SELECT Product, sum (Sales_amount) AS Total_salg Fra Salg WHERE Product in ('Telefon', 'Høyttalere') GROUP BY PRODUCT; 

Etter utdata er den resulterende produksjonen der radene filtreres først, telefon- og høyttalerrader hentet, deretter blir aggregatfunksjonen utført.

Definisjon av å ha klausul

SQL gir HAVING-klausul som kan brukes sammen med GROUP BY- klausulen. Denne HAVING-klausulen hjelper til med å hente verdiene for gruppene som oppfyller visse forhold. Hvor setning kan også brukes i forbindelse med HAVING-klausulen under valg, WHERE-setningen filtrerer den enkelte rad. Rammene blir deretter gruppert, og aggregatberegninger utføres, til slutt HAVING-setningen filtrerer gruppene.

Den oppfører seg på samme måte som WHERE når GROUP BY søkeord ikke brukes. Gruppefunksjonene som min, max, avg, sum og antall kan vises i bare to klausuler: SELECT og HAVING-klausul. Det gir en tilstand på tuplene som tilsvarer hver verdi i gruppen av attributter. Det eneste settet av poster som tilfredsstiller tilstanden, vil bli vist som resultat.

Her tar vi også det samme eksemplet som WHERE-klausulen og vurderer det samme " Salg " -bordet. Når vi vil beregne Total_sales av telefon og høyttalere ved hjelp av HAVING-klausul, skriver vi følgende spørring.

 SELECT Product, sum (Sales_amount) AS Total_sales FRA SALGGRUPPE AV PRODUKT MED PRODUKT ('Telefon', 'Høyttalere'); 

Spørringen produserer følgende utgang hvor produktene hentes først, deretter blir aggregatfunksjonen (sum) utført, og til sist grupper blir filtrert i motsetning til WHERE-setningen.

Når vi vil finne bare de produktene der Total_sales er større enn 1000. Spørringen kan skrives som:

 SELECT Product, sum (Sales_amount) AS Total_sales FRA SALGGRUPPE AV PRODUKT HAVING sum (Sales_amount)> 1000; 

Den produserte produksjonen er:

Dette kan ikke utføres med WHERE-setningen til tross for HAVING, og det genererer en feilmelding fordi WHERE-setningen ikke kan brukes med aggregatfunksjoner.

Nøkkelforskjeller mellom hvor og har klausul

  1. WHERE klausul er ansatt i radoperasjoner og brukes på en enkelt rad mens HAVING-klausulen brukes i kolonneoperasjoner og kan brukes på oppsummerte rader eller grupper.
  2. I WHERE-setningen hentes de ønskede dataene i henhold til den anvendte tilstanden. I motsetning HAVING-klausul henter hele data, blir separering gjort i henhold til tilstanden.
  3. Aggregate funksjoner som min, sum, max, avg kan aldri vises sammen med WHERE-setningen. Imidlertid kan disse funksjonene vises i HAVING-klausulen.
  4. HAVING-setningen kan ikke brukes uten SELECT-setning. Omvendt kan WHERE brukes med SELECT, UPDATE, DELETE, etc.
  5. Hvor setningen opptrer som et forfilter mens HAVING-klausulen virker som et postfilter.
  6. WHERE klausul når den brukes med GROUP BY, kommer før GROUP BY. Dette betyr at WHERE filterrader før aggregatberegninger utføres. På den annen side kommer HAVING etter GROUP BY, noe som betyr at det filtreres etter at aggregatberegninger utføres.

Konklusjon

WHERE og HAVING-setningen fungerer på samme måte, bortsett fra den ekstra funksjonen som HAVING-klausulen er populær for. HAVING-klausulen kan effektivt fungere med aggregatfunksjoner mens WHERE ikke kan betjenes med aggregatfunksjoner.

Top