Doporučená, 2021

Redakce Choice

Rozdíl mezi místem a klauzí v SQL

Klauzule WHERE a HAVING se používají především ve výpisu SQL dotazů, což nám umožňuje omezit kombinaci ve výsledném vztahu pomocí specifického predikátu. Hlavní rozdíl mezi WHERE a HAVING spočívá v tom, že klauzule WHERE specifikuje podmínky pro výběr n-tic (řádků) ze vztahů, včetně podmínek spojení, je-li potřeba. Na druhé straně, HAVING klauzule specifikuje podmínku pro skupiny být vybrán spíše než na individuálních n-ticích.

SQL znamená Structured Query Language ; Jedná se o komplexní nebo deklarativní databázový jazyk používaný pro přístup k datům z databází.

Srovnávací graf

Základ pro srovnáníKDEMÍT
ZákladníImplementováno v řadových operacích.Implementováno ve sloupcových operacích.
Aplikován naJeden řádekSouhrnný řádek nebo skupiny.
Načítání datVybírá pouze konkrétní data z jednotlivých řádků podle podmínky.Nejdříve jsou načtena kompletní data a pak oddělena podle podmínek.
Agregační funkceNelze zobrazit v klauzuli WHERE.Může se objevit v klauzuli HAVING.
Používá seSELECT a další příkazy jako UPDATE, DELETE nebo jeden z nich.Nelze použít bez příkazu SELECT.
Chovat se jakoPředfiltrPost-filtr
SKUPINA VYTVOŘENÁPochází za WHERE.Přijde po HAVING.

Definice kde

Klauzule SQL WHERE se používá k popisu stavu v době načítání dat z jedné tabulky nebo spojením s více tabulkami. Pokud je zadaná podmínka splněna, vrací pouze určitou hodnotu z tabulky. Klauzule WHERE se používá k proniknutí do záznamů ak získání pouze nezbytných záznamů.

SQL také implementuje logická propojení a, a ne v klauzuli WHERE, které jsou také známé jako boolean podmínky; podmínka musí být pravdivá pro získání n-tic. Operandy výrazů logických spojů zahrnují operátory porovnání, jako jsou <, <=, >, > =, = a . Tyto srovnávací operátory srovnávají řetězce a aritmetické výrazy. Může být použit v příkazu SELECT, stejně jako příkazy UPDATE, DELETE .

Vezměme si příklad. Níže uvedená tabulka s názvem „ Prodejní “ tabulka se skládá z atributů „ Product “ a „ Sales_amount “.

Následující dotaz se zapíše pro výpočet Total_sales telefonu a reproduktorů.

 SELECT Produkt, součet (Sales_amount) AS Total_sales FROM Prodej, kde je produkt v ('Telefon', 'Speakers') GROUP BY Product; 

Následující výstup je výsledný výstup, kde jsou řádky filtrovány jako první, načteny jsou řádky telefonu a reproduktoru a poté je provedena agregační funkce.

Definice ustanovení

SQL poskytuje klauzuli HAVING, kterou lze použít společně s klauzulí GROUP BY . Tato doložka HAVING pomáhá při načítání hodnot pro skupiny, které splňují určité podmínky. Klauzule WHERE lze také použít ve spojení s klauzulí HAVING během výběru, klauzule WHERE filtruje jednotlivé řádky. Řádky jsou pak seskupeny a jsou provedeny agregované výpočty, na poslední klauzuli HAVING filtry skupiny.

Chová se stejně jako při použití klíčového slova GROUP BY. Skupinové funkce jako min, max, avg, součet a počet se mohou objevit pouze ve dvou klauzulích: klauzule SELECT a HAVING. Poskytuje podmínku na n-ticích odpovídající každé hodnotě ve skupině atributů. Výsledkem bude pouze jediná sada záznamů, která splňuje podmínku.

Zde také bereme stejný příklad jako klauzule WHERE a zvažujeme stejnou tabulku „ Prodej “. Když chceme vypočítat Total_sales telefonu a reproduktorů pomocí HAVING klauzule, zapíšeme následující dotaz.

 SELECT Produkt, součet (Sales_amount) AS Total_sales FROM Sales GROUP BY Product HAVING Produkt v ('telefon', 'Reproduktory'); 

Dotaz produkuje následující výstup, kde jsou produkty načteny jako první, pak se provede agregační funkce (součet) a na poslední skupiny se filtrují na rozdíl od klauzule WHERE.

Když chceme najít pouze ty produkty, kde Total_sales je větší než 1000. Dotaz může být zapsán jako:

 SELECT Produkt, součet (Sales_amount) AS Total_sales FROM Sales GROUP BY Product HAVING suma (Sales_amount)> 1000; 

Produkovaný výstup je:

To nelze provést pomocí klauzule WHERE navzdory HAVING a generuje chybovou zprávu, protože klauzule WHERE nelze použít s agregační funkce.

Klíčové rozdíly mezi místem a článkem

  1. Klauzule WHERE se používá v operacích řádků a aplikuje se na jeden řádek, zatímco klauzule HAVING se používá v operacích sloupců a lze ji použít pro shrnuté řádky nebo skupiny.
  2. V klauzuli WHERE jsou požadovaná data načítána podle použité podmínky. Na rozdíl od toho, HAVING klauzule načíst celá data pak separace se provádí podle podmínky.
  3. Agregační funkce jako min, sum, max, avg se nikdy nemohou objevit spolu s klauzulí WHERE. Tyto funkce se mohou objevit v klauzuli HAVING.
  4. Klauzule HAVING nelze použít bez příkazu SELECT. Naopak WHERE lze použít s SELECT, UPDATE, DELETE atd.
  5. Klauzule WHERE se chová jako předfiltr, zatímco klauzule HAVING funguje jako post-filtr.
  6. Klauzule WHERE při použití s ​​GROUP BY přichází před GROUP BY. To znamená, že WHERE filtrovat řádky před provedením souhrnných výpočtů. Na druhou stranu, HAVING přichází za GROUP BY, což znamená, že se filtruje po provedení souhrnných výpočtů.

Závěr

Klauzule WHERE a HAVING funguje stejným způsobem, s výjimkou další funkce, kterou je klauzule HAVING oblíbená. Klauzule HAVING může efektivně pracovat s agregačními funkcemi, zatímco WHERE nelze provozovat s agregovanými funkcemi.

Top