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 sammenligning | HVOR | AT HAVE |
---|---|---|
Grundlæggende | Implementeret i rækkeoperationer. | Implementeret i kolonneoperationer. |
Anvendt til | Enkelt række | Sammenfattet række eller grupper. |
Data hentning | Den 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 funktioner | Kan ikke vises i WHERE-klausulen. | Kan vises i HAVING-klausul. |
Anvendes med | SELECT og andre udsagn som UPDATE, DELETE eller en af dem. | Kan ikke bruges uden SELECT-sætning. |
Handle som | Forfilter | Post-filter |
GROUP BY | Kommer 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.
SELECT Product, sum (Sales_amount) AS Total_sales FRA SALG HVOR Produkt i ('Telefon', 'Højttalere') GROUP BY PRODUCT;
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
- 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.
- 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.
- Samlede funktioner som min, sum, max, avg kan aldrig vises sammen med WHERE-klausulen. Imidlertid kan disse funktioner vises i HAVING-klausul.
- HAVING-klausul kan ikke bruges uden en SELECT-sætning. Omvendt kan WHERE bruges med SELECT, UPDATE, DELETE osv.
- Hvor klausul opfører sig som et forfilter, mens HAVING-klausul virker som et postfilter.
- 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.