Příkazy jazyka SQL: Porovnání verzí

Přidáno 1 732 bajtů ,  před 2 lety
Rozšíření o SQL klauzule a logické zpracování SQL dotazu
m (→‎Příkazy pro řízení dat: upřesnění vnitřního odkazu)
(Rozšíření o SQL klauzule a logické zpracování SQL dotazu)
značky: editace z Vizuálního editoru nevhodná syntaxe v nadpisu
SET sql_mode="NO_AUTO_VALUE_ON_ZERO"; -- vypne automatické doplňování hodnoty primárního klíče s příznakem AUTO_INCREMENT
</source>
 
== Syntaxe jednoduchého SQL dotazu do tabulky a logické zpracování dat ==
Pokud se chceme dotázat SQL skriptem do nějaké tabulk pro určitá data tak kromě zmíněného DML příkazu [[SELECT]] využíváme tzv klauzule. Mezi tyto klauzule patří
 
* [[WHERE]] - zadání podmínek a filtrů dat
* [[GROUP BY]] - seskupování záznamů
* [[HAVING]] - zadání podmínek nad agregační funkcí
* [[ORDER BY]] - seřazení dat
 
Příkaz [[SELECT]] a tyto klauzule musejí být zadány v určitém pořadí. Je ale velký rozdíl mezi tím, jak se skript správně píše a mezí tím jak je poté ve skutečnosti zpracováván.
 
==== Syntaxe SQL [https://biportal.cz/zakladni-sql-dotazy/ dotazu] ====
 
# [[SELECT]] [sloupec_1] AS Alias_1, [sloupec_2] AS Alias_2, SUM([sloupec_3]) AS [Soucet_sloupec_3]
# FROM [tabulka]
# [[WHERE]] [sloupec_1] like ('%text%')
# [[GROUP BY]] [sloupec_1], [sloupec_2]
# [[HAVING]] SUM([sloupec_3]) > [hodnota]
# [[ORDER BY]] [sloupec_1]
 
==== Logické zpracování dotazu<ref>{{Citace elektronické monografie
| titul = BI Portál
| url = https://biportal.cz/sql-zpracovani-dotazu/
| datum vydání = 2016-08-20
| datum přístupu = 2019-09-30
| jazyk = cs-CZ
| jméno = Honza Zedníček-BI
| příjmení = Developer
| jméno2 = Finanční
| příjmení2 = controller
}}</ref> ====
 
# FROM
# [[WHERE]]
# [[GROUP BY]]
# [[HAVING]]
# [[SELECT]]
# [[ORDER BY]]
 
Výše uvedené si lze jednoduše otestovat tak, že bychom do WHERE klauzule napsali podmínku Alias_1 like ('%text%'). SQL engine by nám nebyl schopen vrátit výsledek a skript by skončil chybou. Důvodem je to, že v momentě kdy se zpracovává WHERE klauzule, tak ještě alias nezná (SELECT se zpracovává až za WHERE).
 
==Komentáře==
Neregistrovaný uživatel