Skillnaden mellan var och att ha klausul i SQL

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 12 Maj 2024
Anonim
Difference Between WHERE and HAVING in SQL With Examples | Most Important Interview Question
Video: Difference Between WHERE and HAVING in SQL With Examples | Most Important Interview Question

Innehåll


VAR och HAVING-klausulen huvudsakligen används i uttalandet av SQL-frågor gör att vi kan begränsa kombinationen i resultatrelationen genom att använda ett specifikt predikat. Den största skillnaden mellan VAR och HAVNING är att VAR-klausulen anger villkoren för att välja tuples (rader) från relationerna, inklusive anslutningsvillkor vid behov. Å andra sidan anger HAVING-klausulen ett villkor på grupper väljs snarare än på enskilda tuplingar.

SQL står för Structured Query Language; det är omfattande eller deklarativt databasspråk som används för att få åtkomst till data från databaserna.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseVARHAR
GrundläggandeImplementerad i radoperationer.Implementerad i kolumnoperationer.
Appliceras påEn radSammanfattad rad eller grupper.
Data hämtarDen hämtar bara de specifika uppgifterna från vissa rader beroende på villkoret.Först hämtas fullständiga data och separeras sedan i enlighet med villkoret.
Samlade funktionerKan inte visas i WHERE-klausulen.Kan visas i HAVING-klausulen.
Används medVÄLJ och andra uttalanden som UPDATE, DELETE eller någon av dem.Kan inte användas utan SELECT-uttalande.
Agera somFörfilterPost-filter
GRUPP AVKommer efter VAR.Kommer innan HAVNING.


Definition av var klausul

SQL VAR klausul används för att beskriva ett tillstånd vid tidpunkten för att hämta data från en enda tabell eller genom att gå med flera tabeller. Det returnerar bara det specifika värdet från tabellen om det givna villkoret är uppfylld. WHERE-klausulen används för att genomsyra posterna och bara hämta de nödvändiga posterna.

SQL implementerar också de logiska anslutningarna och, eller och inte i WHERE-klausulen som också kallas boolean skick; villkoret måste vara sant för att hämta tuple. Operandema för de logiska anslutningsuttrycka innefattar jämförelseaktorer som <, <=, >, >=, =, och <>. Dessa jämförelseoperatörer jämför strängar och aritmetiska uttryck. Det kan användas i VÄLJ uttalande, såväl som i UPDATE, RADERA uttalanden.


Låt oss ta ett exempel. Tabellen nedan kallas "försäljning"Tabellen består av"Produkt'Och'Försäljningsbeloppet"Attribut.

Följande fråga ska skrivas för att beräkna Total rea av telefon och högtalare.

VÄLJ Produkt, summa (Sales_amount) AS Total_Sales FRA försäljning VAR Produkt i (telefon, högtalare) KONCERNEN per produkt;

Följande utgång är den resulterande utgången där raderna filtreras först, telefon- och högtalarraderna hämtas sedan den sammanlagda funktionen utförs.

Definition av att ha klausul

SQL ger Har klausul som kan användas tillsammans med GRUPP AV klausul. Denna HAVING-klausul hjälper till att hämta värden för de grupper som uppfyller vissa villkor. VAR-klausulen kan också användas i samband med HAVING-klausulen under valet, WHERE-klausulen filtrerar den enskilda raden. Raderna grupperas sedan och aggregerade beräkningar utförs, till sist HAVING-klausul filtrerar grupperna.

Det fungerar på samma sätt som VAR när sökordet GRUPP AV inte används. Gruppfunktionerna som min, max, avg, summa och räkning kan visas i endast två klausuler: SELECT och HAVING. Det tillhandahåller ett villkor på tuplen som motsvarar varje värde i gruppen attribut. Den enda uppsättningen poster som uppfyller villkoret visas som resultat.

Här tar vi också samma exempel som WHERE-klausulen och överväger samma "försäljning"Bord. När vi vill beräkna Total rea av telefon och högtalare med HAVING-klausul, kommer vi att skriva följande fråga.

VÄLJ Produkt, summa (Sales_amount) AS Total_sales FRÅN försäljningsgrupp per produkt som har produkt i (telefon, högtalare);

Frågan producerar följande utgång där produkterna hämtas först, sedan utförs aggregerad funktion (summa) och till sist filtreras grupper till skillnad från WHERE-klausulen.

När vi bara vill hitta de produkter där Total rea är större än 1000. Frågan kan skrivas som:

VÄLJ Produkt, summa (Sales_amount) AS Total_sales FRA Sales Group per produkt HAVING summa (Sales_amount)> 1000;

Den producerade effekten är:

Detta kan inte utföras med WHERE-klausul trots HAVING och det genererar ett fel eftersom WHERE-klausulen inte kan användas med aggregerade funktioner.

  1. VAR klausul används i radoperationer och tillämpas på en rad, medan HAVING-klausul används i kolumnoperationer och kan tillämpas på sammanfattade rader eller grupper.
  2. I VAR-klausulen hämtas de önskade uppgifterna enligt det tillämpade villkoret. Däremot HAVING-klausul hämtar hela data, då görs separering i enlighet med villkoret.
  3. Samlade funktioner som min, summa, max, avg kan aldrig visas tillsammans med WHERE-klausulen. I motsats till detta kan dessa funktioner visas i HAVING-klausulen.
  4. HAVING-klausul kan inte användas utan SELECT-uttalande. Omvänt kan WHERE användas med SELECT, UPDATE, DELETE, etc.
  5. VAR klausulen fungerar som ett förfilter medan HAVING-klausulen fungerar som ett postfilter.
  6. VAR klausulen när den används med GROUP BY, kommer före GROUP BY. Detta betyder att VAR-filterraderna före aggregerade beräkningar utförs. Å andra sidan kommer HAVING efter GROUP BY, vilket innebär att det filtreras efter att aggregerade beräkningar har utförts.

Slutsats

VAR och HAVING-klausulen fungerar på samma sätt förutom den extra funktionen som HAVING-klausulen är populär för. HAVING-klausulen kan effektivt arbeta med aggregerade funktioner medan WHERE inte kan hanteras med aggregerade funktioner.