Rozdiel medzi doložkou o mieste a doložkou v SQL

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 13 Smieť 2024
Anonim
Rozdiel medzi doložkou o mieste a doložkou v SQL - Technológie
Rozdiel medzi doložkou o mieste a doložkou v SQL - Technológie

Obsah


Kým a klauzula HAVING sa používajú hlavne v príkaze dotazov SQL, umožňujú nám to obmedziť kombináciu vo výslednom vzťahu pomocou špecifického predikátu. Hlavný rozdiel medzi WHERE a HAVING je v tom, že klauzula WHERE špecifikuje podmienky pre výber n-tice (riadky) zo vzťahov, vrátane prípadných podmienok spojenia. Na druhej strane klauzula HAVING špecifikuje podmienku na internete skupiny skôr ako na jednotlivé n-tice.

SQL znamenať Štruktúrovaný Dopytovací Jazyk; je to komplexný alebo deklaratívny databázový jazyk používaný na prístup k údajom z databáz.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnanieKDEMAJÚCE
základnéImplementované v riadkových operáciách.Implementované v operáciách stĺpcov.
Aplikovaný naJeden riadokSumarizovaný riadok alebo skupiny.
Získavanie údajovVyberie konkrétne údaje z konkrétnych riadkov podľa podmienky.Najprv sa načítajú úplné údaje a potom sa oddelia podľa podmienok.
Agregované funkcieNedá sa zobraziť v klauzule WHERE.Môže sa objaviť v klauzule HAVING.
Používa sa sVYBERTE a ďalšie príkazy, napríklad UPDATE, DELETE alebo niektorý z nich.Nemožno ich použiť bez príkazu SELECT.
Chovať sa akoPre-filterPost-filter
GROUP BYPrichádza po KDE.Prichádza pred HAVING.


Definícia klauzuly

SQL KDE doložka sa používa na opis stavu v čase získania údajov z jednej tabuľky alebo spojením viacerých tabuliek. Konkrétnu hodnotu z tabuľky vracia, iba ak je splnená zadaná podmienka. KDE sa klauzula používa na prenikanie do záznamov a na získavanie iba potrebných záznamov.

SQL tiež implementuje logické pripojenia a, alebo a nie v klauzuli WHERE, ktoré sú známe aj ako boolean stav; Podmienkou musí byť načítanie n-tíc. Operandy výrazov logických spojív zahŕňajú operátory porovnávania, ako napríklad <, <=, >, >=, =a <>, Tieto operátory porovnávania porovnávajú reťazce a aritmetické výrazy. Môže byť použitý v SELECT vyhlásenie, ako aj v UPDATE, DELETE Vyhlásenia.


Urobme príklad. Tabuľka uvedená nižšie s názvom namedodbyt‘Tabuľka sa skladá z‘výrobok‘A‘Objem predaja‘Atribúty.

Nasledujúci dotaz sa napíše na výpočet Celkové predaje telefónu a reproduktorov.

VYBRAŤ Produkt, suma (Suma predaja) AS Spolu_predaj Z predaja KDE Produkt v (Telefón, Reproduktor) SKUPINA PODĽA produktu;

Nasledujúcim výstupom je výsledný výstup, kde sa najprv filtrujú riadky, získajú sa riadky telefónu a reproduktorov a potom sa vykoná agregačná funkcia.

Vymedzenie pojmu doložka

SQL poskytuje Klauzula HAVING ktoré sa dajú použiť spolu s GROUP BY klauzula. Táto klauzula HAVING pomáha pri získavaní hodnôt pre skupiny, ktoré spĺňajú určité podmienky. Klauzula WHERE sa môže použiť aj v spojení s klauzuliou HAVING počas výberu, klauzula WHERE filtruje jednotlivé riadky. Riadky sa potom zoskupia a vykonajú sa súhrnné výpočty, na poslednom základe klauzula HAVING filtruje skupiny.

Chová sa rovnako ako KDE, keď sa kľúčové slovo GROUP BY nepoužíva. Funkcie skupiny, ako sú min, max, priem., Súčet a počet, sa môžu objaviť iba v dvoch klauzulách: klauzula SELECT a HAVING. Poskytuje podmienku pre n-tice zodpovedajúce každej hodnote v skupine atribútov. Výsledkom bude iba jediná skupina záznamov, ktorá spĺňa podmienky.

Aj tu uvádzame rovnaký príklad ako klauzula WHERE a zvažujeme to isté ‘odbyt‘Stôl. Keď chceme vypočítať Celkové predaje telefónu a reproduktorov pomocou klauzuly HAVING, napíšeme nasledujúci dotaz.

VYBRAŤ Produkt, suma (Predajná čiastka) AS Spolu_predaj Z SKUPINY SKUPINY PODĽA PRODUKTU, KTORÝ MÁ produkt (telefón, reproduktory);

Dotaz vytvára nasledujúci výstup, kde sa produkty získavajú ako prvé, potom sa vykoná agregačná funkcia (suma) a na poslednú skupinu sa filtruje na rozdiel od klauzuly WHERE.

Keď chceme nájsť iba tie výrobky, kde Celkové predaje je väčšia ako 1 000. Dotaz možno napísať takto:

VYBRAŤ Produkt, suma (Predajná suma) AS Spolu_predaj ZO SKUPINY SKUPINY PODĽA PRODUKTU, KTORÝ MAJÚ sumu (Predajná suma)> 1000;

Produkovaný výstup je:

Toto sa nedá vykonať pomocou klauzuly WHERE napriek HAVING a to generuje chybu, pretože klauzulu WHERE nemožno použiť s agregovanými funkciami.

  1. KDE sa klauzula používa v riadkových operáciách a používa sa v jednom riadku, zatiaľ čo klauzula HAVING sa používa v operáciách stĺpcov a dá sa použiť na súhrnné riadky alebo skupiny.
  2. V klauzule WHERE sú požadované údaje vyvolané podľa aplikovanej podmienky. Na rozdiel od toho, klauzula HAVING načíta celé údaje, potom sa oddelenie uskutoční podľa podmienok.
  3. Agregované funkcie ako min, sum, max, avg sa nikdy nemôžu objaviť spolu s klauzuliou WHERE. Naopak, tieto funkcie sa môžu objaviť v klauzule HAVING.
  4. Klauzula HAVING nemôže byť použitá bez príkazu SELECT. A naopak, KDE sa dajú použiť s SELECT, UPDATE, DELETE atď.
  5. KDE klauzula sa správa ako predbežný filter, zatiaľ čo klauzula HAVING funguje ako dodatočný filter.
  6. KDE sa klauzula pri použití so skupinou GROUP BY dostane pred skupinou GROUP BY. To znamená, že KEDY filtrujú riadky pred vykonaním súhrnných výpočtov. Na druhej strane HAVING prichádza po GROUP BY, čo znamená, že po vykonaní agregovaných výpočtov sa filtruje.

záver

Kedy a klauzula HAVING funguje rovnako, okrem dodatočnej funkcie, pre ktorú je klauzula HAVING obľúbená. Klauzula HAVING môže efektívne pracovať s agregovanými funkciami, zatiaľ čo WHERE sa nedá prevádzkovať s agregovanými funkciami.