Tato část je zaměřena na tvorbu základních SELECT dotazů. Dozvíte se, jak vybírat data z tabulek, jak je filtrovat, řadit a omezovat počty řádků.
SQL2 - Základní dotazy
Tato část je zaměřena na tvorbu základních SELECT dotazů. Dozvíte se, jak vybírat data z tabulek, jak je filtrovat, řadit a omezovat počty řádků.
Základní SELECT
Zjednodušená syntaxe příkazu SELECT je následující
SELECT
<seznam sloupců>, <agregace>
FROM
<zdrojové tabulky>
WHERE
<podmínky>
GROUP BY
<seznam sloupců>
ORDER BY
<seznam sloupců>
Tato zjednodušená syntaxe neobsahuje všechny povolené části, ale jen ty nejčastěji využívané. Přehled všech možností příkazu SELECT naleznete v dokumentaci. Všimněte si, že pořadí jednotlivých částí příkazu SELECT odpovídá větné stavbě anglické věty. Níže jsou rozebrány jednotlivé části tohoto příkazu.
SELECT
Tato část obsahuje seznamu sloupců, které má dotaz vrátit. Kromě samotných názvů sloupců zde mohou být i agregační funkce, které budou rozebrány v následující části seriálu. Znak * v této části značí výběr všech sloupců.
FROM
V této části jsou uvedeny všechny tabulky, z nichž se data načítají. Prozatím si vystačíme s jednou tabulkou. Možnosti načítání dat z více tabulek jsou popsány v částech věnovaných vnitřnímu a vnějšímu spojení.
WHERE
Zde jsou uvedeny podmínky, které musí řádek splňovat, aby byl zahrnut ve výstupu. Řádky nesplňující tyto podmínky jsou zahozeny. Podmínky lze kombinovat pomocí běžných logických spojek (AND, OR…).
GROUP BY
Slouží k rozdělení vybraných řádků do skupin. Seskupování je podrobněji probráno v následující části.
ORDER BY
Tato část určuje pořadí řazení řádků ve výstupu. Pokud je zde uvedeno více sloupců, provádí se řazení postupně podle prvního, druhého, třetího atd.
Komentáře
Do SQL kódu je možné zapisovat i komentáře. Existují dvě možnosti - jednořádkové a víceřádkové. Jednořádkové komentáře jsou uvozeny dvěma pomlčkami, přičemž všechno za těmito pomlčkami až do konce řádku se považuje za komentář. Víceřádkové komentáře se uzavírají mezi /* a */. Okomentovaný kód tedy může vypadat následovně.
/*
* Dotaz vypise vsechny
* vyrobce z tabluky
* Manufacturer
*/
SELECT
* -- Vyber vsechny sloupce
FROM
Manufacturer
Filtrování dat
Data lze filtrovat v části WHERE. Zde lze zapisovat podmínky obsahující hodnoty v jednotlivých sloupcích daného řádku. Výrazy pro filtrování se tedy liší podle typu sloupce.
Číselné sloupce
U číselných sloupců lze k tvorbě podmínek využívat operátory porovnání
> větší než
< menší než
= rovná se
!= nerovná se
<> nerovná se
Kromě toho lze používat i další operátory (IN, BETWEEN atd.), se kterými se seznámíte v této a následující části u konkrétních dotazů.
Datum a čas
U sloupců typu datum a čas se používají také operátory porovnání, ale konstanty je nutné psát do apostrofů ve formátu odpovídajícímu nastavení lokálního prostředí databáze nebo ve formátu ISO8601, tedy 'yyyy-mm-ddThh:mm:ss'
Řetězce
U řetězců se konstanty rovněž zapisují do apostrofů. Kromě běžného porovnání existuje u řetězců také operátor LIKE, který umožňuje porovnání na shodu s konkrétním vzorem. V těchto vzorech lze využívat zástupné znaky (wildcards)
_ zastupuje libovolný znak
% zastupuje libovolný řetězec
Příklady užití těchto zástupných znaků najdete ve videu.
V prezentaci SQL2 - Samostatná práce naleznete příklady na procvičení znalostí získaných v této části. Na každém snímku je vždy zadání a po posunutí se zobrazí odpověď. Než se na odpověď podíváte, zkuste nejdřív přijít na řešení samostatně.