Soovitatav, 2021

Toimetaja Valik

Erinevus kus ja võttes klausli SQL

WHERE ja HAVING klauslit kasutatakse peamiselt SQL päringute avalduses, mis võimaldab meil piirata tulemuste suhte kombinatsiooni konkreetse predikaadi abil. Suurim erinevus WHERE ja HAVING vahel on see, et WHERE klausel määrab tingimused suhete valimiseks (ridad), sealhulgas vajaduse korral liitumistingimused. Teisest küljest määrab HAVING klausel välja valitud gruppide seisundi, mitte üksikute tuple.

SQL tähistab struktureeritud päringu keelt ; see on terviklik või deklaratiivne andmebaasikeel, mida kasutatakse andmebaaside andmetele juurdepääsuks.

Võrdluskaart

Võrdluse alusKUSKUIDAS
PõhilineRakendatud reaoperatsioonides.Rakendatud veergude operatsioonides.
RakendatudÜks ridaKokkuvõtlik rida või rühmad.
Andmete allalaadimineSee tõmbab ainult konkreetsete ridade andmed vastavalt olekule.Kõigepealt kogutakse täielikud andmed ja eraldatakse vastavalt olukorrale.
KoondfunktsioonidEi saa ilmuda WHERE klauslis.Võib ilmuda HAVING klauslis.
Kasutatakse koosSELECT ja muud avaldused nagu UPDATE, DELETE või üks neist.Ei saa kasutada ilma SELECT-i avaldusteta.
TegutsemaEelfilterPärast filtrit
GROUP BYJärgneb WHERE.Järgneb HAVING.

Kus klausli määratlus

SQL WHERE klauslit kasutatakse andmete kirjeldamiseks ühest tabelist pärinevate andmete hankimise ajal või mitme tabeli ühendamisega. Kui see tingimus on täidetud, tagastab ta ainult konkreetse väärtuse tabelist. WHERE klauslit kasutatakse dokumentide läbilaskmiseks ja ainult vajalike kirjete allalaadimiseks.

SQL rakendab ka loogilisi ühendusi ja, või mitte WHERE klauslit, mida tuntakse ka kui booleanse seisundit; Tingimused peavad olema korrektsed, et tuunipakke alla laadida. Loogiliste ühendussõnade operandid sisaldavad võrdlustoiminguid, nagu <, <=, >, > =, = ja . Need võrdlevad operaatorid võrdlevad stringi ja aritmeetilisi väljendeid. Seda saab kasutada nii SELECT, kui ka UPDATE, DELETE avaldustes.

Võtame näiteks. Alltoodud tabel nimega „ Müügitabel ” koosneb atribuutidest „ Toode ” ja „ Müügikogus ”.

Telefoni ja kõlarite Total_sales arvutamiseks tuleb kirjutada järgmine päring.

 SELECT Product, summa (Sales_amount) AS Total_sales müügist, kuhu kuulub toote (telefon, kõlarid) grupitoode; 

Järgmine väljund on tulemuseks olev väljund, kus read filtreeritakse esmalt, telefoni- ja kõlariread leitakse, seejärel teostatakse koondfunktsioon.

Klausli mõiste

SQL annab HAVING klausli, mida saab kasutada koos GROUP BY klausliga. See HAVING klausel aitab leida teatud tingimustele vastavate rühmade väärtused. WHERE klausel võib kasutada ka koos HAVING klausliga valiku ajal, WHERE klausel filtreerib üksiku rea. Seejärel rühmitatakse ridad ja teostatakse koondarvutused, viimaks filtreerib grupid HAVING klausel.

See toimib samamoodi nagu WHEREi märksõna kasutamisel. Grupi funktsioonid, nagu min, max, avg, summa ja arv, võivad ilmuda ainult kahes punktis: SELECT ja HAVING. See annab tingimustele, mis vastavad atribuutide rühma igale väärtusele. Tulemusena näidatakse ainult tingimustele vastavaid kirjeid.

Samuti võtame me sama näite kui WHERE klausel ja sama müügi tabelit. Kui me tahame arvutada kokku telefoni ja kõnelejate summa, kasutades HAVING klauslit, siis me kirjutame järgmise päringu.

 SELECT Product, summa (Sales_amount) AS Total_sales müügigrupist toodete kaupa Toode (telefon, kõlarid); 

Päring toob välja järgmise väljundi, kus tooted esmakordselt alla laaditakse, seejärel täidetakse koondfunktsioon (summa) ja viimases rühmas filtreeritakse erinevalt WHERE klauslist.

Kui me tahame leida ainult neid tooteid, kus Total_sales on suurem kui 1000. Päringut saab kirjutada järgmiselt:

 SELECT Product, summa (Sales_amount) AS Total_sales müügigrupist toodete kaupa summa (Müügi summa)> 1000; 

Toodetud toodang on:

Seda ei saa teha WHERE-klausli abil HAVING-st hoolimata ja see tekitab veateate, sest WHERE-klauslit ei saa kasutada koos koondfunktsioonidega.

Olulised erinevused seal, kus ja millel on klausel

  1. WHERE klauslit kasutatakse reaoperatsioonides ja rakendatakse ühele reale, samas kui HAVING klauslit kasutatakse veerguoperatsioonides ja seda saab kasutada kokkuvõtlike ridade või rühmade puhul.
  2. WHERE-klauslis laaditakse soovitud andmed vastavalt rakendatavale olukorrale. Seevastu HAVING klausel tõmbab kogu andmed ja eraldamine toimub vastavalt olukorrale.
  3. Koondfunktsioonid nagu min, summa, max, avg ei saa kunagi koos WHERE klausliga ilmuda. Vastupidi, need funktsioonid võivad ilmuda HAVING klauslis.
  4. HAVING klausel ei saa kasutada ilma SELECT-i avaldusteta. Seevastu WHERE saab kasutada koos valikuga SELECT, UPDATE, DELETE jne.
  5. WHERE klausel käitub eelfiltrina, samas kui HAVING klausel toimib postfiltrina.
  6. WHERE klausel, mida kasutatakse koos GROUP BY-ga, tuleb enne GROUP BY. See tähendab, et WHERE filtri read enne koondarvutuste tegemist. Teisest küljest, HAVING tuleb pärast GROUP BY, mis tähendab, et see filtreerib pärast koondarvutuste tegemist.

Järeldus

WHERE ja HAVING klausel toimib samal viisil, välja arvatud lisavõimalus, mida HAVING klausel on populaarne. HAVING klausel saab tõhusalt töötada koos koondfunktsioonidega, kui WHERE-d ei saa kasutada koondfunktsioonidega.

Top