Erinevus SQL-i asukoha ja klausli vahel

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 5 Mai 2024
Anonim
CS50 2014 - Week 8
Videot: CS50 2014 - Week 8

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.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusKUSOLEMAS
PõhilineRakendatud ridaoperatsioonidena.Rakendatud veergude toimingutes.
RakendatudÜks ridaKokkuvõtlik rida või rühmad.
Andmete toomineSee tõmbab konkreetsed andmed konkreetsetest ridadest ainult vastavalt tingimusele.Alguses tuuakse täielikud andmed ja eraldatakse vastavalt tingimustele.
Agregeeritud funktsioonidEi saa esineda klauslis WHERE.Võib esineda klauslis HAVING.
Kasutatakse koosSELECT ja muud avaldused, näiteks UPDATE, DELETE või mõni neist.Ei saa kasutada ilma SELECT-lauseta.
Käitu niiEelfiltreerigeJärelfiltreerimine
RÜHMIGETuleb 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.

  1. 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.
  2. WHERE-klauslis tuuakse soovitud andmed vastavalt rakendatud tingimusele. Vastupidiselt, klausel HAKING tõmbab terveid andmeid, siis eraldamine toimub vastavalt tingimusele.
  3. Agregeeritud funktsioonid nagu min, summa, max, keskmik ei saa kunagi esineda koos klausliga WHERE. Vastupidiselt võivad need funktsioonid esineda klauslis HAVING.
  4. Klauslit HAVING ei saa kasutada ilma SELECT-avalduseta. Vastupidiselt, KUS saab kasutada koos SELECT, UPDATE, DELETE jne
  5. KUS klausel käitub eelfiltrina, samas kui klausel HAVING toimib järelfiltrina.
  6. 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.