SQL tähistab struktureeritud päringu keelt ; see on terviklik või deklaratiivne andmebaasikeel, mida kasutatakse andmebaaside andmetele juurdepääsuks.
Võrdluskaart
Võrdluse alus | KUS | KUIDAS |
---|---|---|
Põhiline | Rakendatud reaoperatsioonides. | Rakendatud veergude operatsioonides. |
Rakendatud | Üks rida | Kokkuvõtlik rida või rühmad. |
Andmete allalaadimine | See tõmbab ainult konkreetsete ridade andmed vastavalt olekule. | Kõigepealt kogutakse täielikud andmed ja eraldatakse vastavalt olukorrale. |
Koondfunktsioonid | Ei saa ilmuda WHERE klauslis. | Võib ilmuda HAVING klauslis. |
Kasutatakse koos | SELECT ja muud avaldused nagu UPDATE, DELETE või üks neist. | Ei saa kasutada ilma SELECT-i avaldusteta. |
Tegutsema | Eelfilter | Pärast filtrit |
GROUP BY | Jä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 ”.
SELECT Product, summa (Sales_amount) AS Total_sales müügist, kuhu kuulub toote (telefon, kõlarid) grupitoode;
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
- 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.
- WHERE-klauslis laaditakse soovitud andmed vastavalt rakendatavale olukorrale. Seevastu HAVING klausel tõmbab kogu andmed ja eraldamine toimub vastavalt olukorrale.
- Koondfunktsioonid nagu min, summa, max, avg ei saa kunagi koos WHERE klausliga ilmuda. Vastupidi, need funktsioonid võivad ilmuda HAVING klauslis.
- HAVING klausel ei saa kasutada ilma SELECT-i avaldusteta. Seevastu WHERE saab kasutada koos valikuga SELECT, UPDATE, DELETE jne.
- WHERE klausel käitub eelfiltrina, samas kui HAVING klausel toimib postfiltrina.
- 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.