
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í | KDE | MÍT |
---|---|---|
Základní | Implementováno v řadových operacích. | Implementováno ve sloupcových operacích. |
Aplikován na | Jeden řádek | Souhrnný řádek nebo skupiny. |
Načítání dat | Vybí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í funkce | Nelze zobrazit v klauzuli WHERE. | Může se objevit v klauzuli HAVING. |
Používá se | SELECT a další příkazy jako UPDATE, DELETE nebo jeden z nich. | Nelze použít bez příkazu SELECT. |
Chovat se jako | Předfiltr | Post-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 “.

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

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
- 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.
- 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.
- Agregační funkce jako min, sum, max, avg se nikdy nemohou objevit spolu s klauzulí WHERE. Tyto funkce se mohou objevit v klauzuli HAVING.
- Klauzule HAVING nelze použít bez příkazu SELECT. Naopak WHERE lze použít s SELECT, UPDATE, DELETE atd.
- Klauzule WHERE se chová jako předfiltr, zatímco klauzule HAVING funguje jako post-filtr.
- 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.