Erinevus SQL-i asukoha ja klausli vahel
Sisu
Kus ja klauslit HAVING kasutatakse peamiselt SQL päringute avalduses, võimaldavad need piirata tulemuse suhte kombinatsiooni konkreetse predikaadi kasutamisega. Suurim erinevus WHERE ja HAVING vahel on see, et WHERE klauslis täpsustatakse WHERE valimise tingimused tuples (read) suhetest, sealhulgas vajaduse korral liitumistingimustest. Teisest küljest määratleb punkt HAVING tingimuse tingimusele rühmad valitakse, mitte üksikute tüüpide järgi.
SQL tähistab Struktureeritud päringute keel; see on põhjalik või deklaratiivne andmebaasikeel, mida kasutatakse andmebaasidest andmete saamiseks.
- Võrdlusdiagramm
- Definitsioon
- Peamised erinevused
- Järeldus
Võrdlusdiagramm
Võrdluse alus | KUS | OLEMAS |
---|---|---|
Põhiline | Rakendatud ridaoperatsioonidena. | Rakendatud veergude toimingutes. |
Rakendatud | Üks rida | Kokkuvõtlik rida või rühmad. |
Andmete toomine | See tõmbab konkreetsed andmed konkreetsetest ridadest ainult vastavalt tingimusele. | Alguses tuuakse täielikud andmed ja eraldatakse vastavalt tingimustele. |
Agregeeritud funktsioonid | Ei saa esineda klauslis WHERE. | Võib esineda klauslis HAVING. |
Kasutatakse koos | SELECT ja muud avaldused, näiteks UPDATE, DELETE või mõni neist. | Ei saa kasutada ilma SELECT-lauseta. |
Käitu nii | Eelfiltreerige | Järelfiltreerimine |
RÜHMIGE | Tuleb pärast KUS. | Tuleb enne KUIDAS. |
Kus klausli määratlus
SQL KUS klausel kasutatakse seisundi kirjeldamiseks, kui andmed kogutakse ühest tabelist või ühendatakse mitme tabeliga. See tagastab konkreetse väärtuse tabelist ainult siis, kui antud tingimus on täidetud. Kus klauslit kasutatakse dokumentide läbitungimiseks ja ainult vajalike kirjete hankimiseks.
SQL rakendab ka loogilisi ühendusi ja, või ja mitte WHERE klauslis, mida tuntakse ka kui loogiline seisund; nippide toomiseks peab tingimus olema tõene. Loogiliste ühenduste avaldiste operandid hõlmavad selliseid võrdlusoperaatoreid nagu <, <=, >, >=, =ja <>. Need võrdlusoperaatorid võrdlevad stringe ja aritmeetilisi avaldisi. Seda saab kasutada VALI avaldus, samuti UPDATE, Kustuta avaldused.
Võtame näite. Allpool toodud tabel nimega 'Müük'Tabel koosneb'Toode'Ja'Müügi_kogus'Atribuudid.
Järgmine päring tuleb arvutada Kokku_müügid telefonist ja kõlaritest.VALI toode, summa (müügi_kogus) AS Kokku_müük MÜÜGIST, KUS toode (telefon, kõlarid) RÜHMISEL TOODETE JÄRGI;
Järgmine väljund on tulemuseks väljund, kus read filtreeritakse kõigepealt, telefoni- ja kõlariridad tuuakse välja, seejärel täidetakse liitfunktsioon.Klausli olemasolu määratlus
SQL pakub KOKKU klausel mida saab kasutada koos RÜHMIGE klausel. See HAVING-klausel aitab leida teatud tingimustele vastavate rühmade väärtusi. Kus klauslit saab valiku ajal kasutada ka koos klausliga HAVING, WHERE klausel filtreerib üksiku rea. Seejärel rühmitatakse rühmad ja tehakse arvutuslikud summeerimised. Lõppude lõpuks filtreerib rühmad HAVING klausli.
See käitub samamoodi kui KUS, kui märksõna RÜHMITAMIST ei kasutata. Grupifunktsioonid nagu min, max, keskm, summa ja loendur võivad esineda ainult kahes klauslis: VALIK ja HAVING. See annab tingimuse tüüpide jaoks, mis vastavad atribuutide rühma igale väärtusele. Ainus kirje, mis tingimust rahuldab, kuvatakse selle tulemusena.
Ka siin võtame sama näite WHERE klauslist ja kaalume sama “Müük'Laud. Kui tahame arvutada Kokku_müügid telefonist ja kõlaritest, kasutades klauslit HAVING, kirjutame järgmise päringu.
VALI toode, summa (müügi_kogus) AS Kokku_müük müügigrupist toote järgi, millel on toode (telefon, kõlarid);
Päring loob järgmise väljundi, kus tooted leitakse kõigepealt, seejärel täidetakse koondfunktsioon (summa) ja lõpuks filtritakse rühmad erinevalt WHERE-klauslist.
Kui tahame leida ainult neid tooteid, kus Kokku_müügid on suurem kui 1000. Päringu võib kirjutada järgmiselt:
VALI toode, summa (müügi_kogus) AS Kokku_müük müügigrupist toote järgi, millel on summa (müügi_kogus)> 1000;
Toodetud väljund on:
Seda ei saa WHERE-klauslit kasutades hoolimata olemasolust teha ja see tekitab tõrke, kuna WHERE-klauslit ei saa kasutada liitfunktsioonidega.
- Kus klauslit kasutatakse rea toimingutes ja seda rakendatakse ühel real, samas kui klauslit HAVING kasutatakse veeru toimingutes ja seda saab kohaldada kokkuvõtlikele ridadele või rühmadele.
- WHERE-klauslis tuuakse soovitud andmed vastavalt rakendatud tingimusele. Vastupidiselt, klausel HAKING tõmbab terveid andmeid, siis eraldamine toimub vastavalt tingimusele.
- Agregeeritud funktsioonid nagu min, summa, max, keskmik ei saa kunagi esineda koos klausliga WHERE. Vastupidiselt võivad need funktsioonid esineda klauslis HAVING.
- Klauslit HAVING ei saa kasutada ilma SELECT-avalduseta. Vastupidiselt, KUS saab kasutada koos SELECT, UPDATE, DELETE jne
- KUS klausel käitub eelfiltrina, samas kui klausel HAVING toimib järelfiltrina.
- KUI klausel, kui seda kasutatakse grupiga GROUP BY, tuleb enne gruppi BY. See tähendab, et KUI filtreeritakse read enne koondarvestuste tegemist. Teisest küljest tuleb HAVING pärast GROUP BY, mis tähendab, et see filtreerib pärast koondarvestuste tegemist.
Järeldus
KUS ja KUI klausel töötab samamoodi, välja arvatud lisafunktsioon, mille jaoks lause HAVING on populaarne. HAVING-klausel saab tõhusalt töötada liitfunktsioonidega, samas kus KOKKU ei saa kasutada liitfunktsioonidega.