Příkaz Select je bezpochyby nejpoužívanějším příkazem, který využijete při manipulaci s daty v databázi. Jeho prostřednictvím lze projít tabulku či více tabulek a získat z nich data, která odpovídají zadaným kritériím a jsou seřazena v žádoucím pořadí.
Příkaz Select lze skutečně používat širokou škálou způsobů.Jak už jsme psali v předchozích článcích o SQL, budeme vycházet ze syntaxe příkazů tak, jak jsou implementovány v oblíbeném databázovém systému MySQL; nicméně většina zde uvedených informací platí pro jazyk SQL obecně, nezávisle na implementaci.
A ještě ke způsobu zápisu syntaxe: Příkazy v hranatých závorkách jsou volitelné, použít je tedy lze, ale nejsou nezbytné.
Základní syntaxe příkazu Select vypadá takto: SELECT [modifikátory] sloupce/výrazy [FROM tabulky] [WHERE podmínky] [GROUP BY {sloupce/výrazy} [modifikátory] [ORDER BY {sloupce/výrazy} [ASC | DESC] [LIMIT {offset}] [modifikátory]. Slovem modifikátory zde drze označujeme všechny doplňkové volby, které jsme zde nevypsali jako ty základní – nejčastěji používané.
Příkladem použití v praxi pak může být třeba SELECT id, jmeno FROM zamestnanci WHERE id>5000 AND id<10000 ORDER BY jmeno DESC. Výsledkem dotazu budou záznamy obsahující sloupce id a jmeno těch zástupců z tabulky zamestnanci, jejichž id je větší než 5000 a menší než 10 000, a to seřazení podle jména sestupně.
Pokud mají být výsledkem všechny sloupce dané tabulky, lze za klíčovým slovem Select zadat divokou kartu *. Mají-li být data vybrána z více tabulek, lze to udělat například takto: SELECT * FROM tabulka1 INNER JOIN tabulka2…, SELECT * FROM tab1 LEFT JOIN (tab2, tab3, tab4)…, kde klíčové slovo Join – v různých variantách – zajišťuje různé způsoby „propojení“ tabulek, z nichž jsou poptávány výsledky.
Pro začátečníka jednodušším způsobem dotazu do více tabulek může být výraz: SELECT tab1.jmeno, tab2.mzda FROM zamestnanci AS tab1, mzdy AS tab2 WHERE tab1.id = tab2.id. Získány tak budou jméno a mzda zaměstnanců z tabulek zamestnanci (alias tab1) a mzdy (alias tab2) a to vždy tak, že se id v jedné tabulce musí shodovat s id v druhé tabulce.
Jak už je vidět z obecného zápisu SQL příkazu Select, lze jej modifikovat řadou různých způsobů a kromě názvů sloupců využít na mnoha místech i různé výrazy. Příkladem může být třeba SELECT AVG(mzda), tab1.* FROM tab1, kde výsledkem je průměrná mzda z tab1, nebo třeba SELECT CONCAT(jmeno,' ',prijmeni) cele_jmeno FROM tab1 ORDER BY tab1, kde výsledkem je „seznam“ obsahující nově vytvořený (virtuální) atribut/sloupec cele_jmeno, jehož obsahem jsou spojené sloupce jmeno a prijmeni (oddělené mezerou) z tabulky tab1.
Pokud potřebujete vybírat více sloupců, řadit podle více sloupců apod., stačí je oddělit čárkou, například SELECT skola, region, kapacita FROM stredni_skoly ORDER BY region, kapacita. Pokud potřebujete zadat podmínku na textový sloupec, místo běžných aritmetických operátorů použijte LIKE, např. jmeno LIKE ‘Novak‘, takže hledáni budou pouze lidé se jménem Novak, případně LIKE ‘%Nov%‘, kdy hledáni budou pouze lidé, jejichž jméno obsahuje řetězec Nov.
Počet způsobů použití příkazu Select je ovšem daleko širší, lze využít širokou škálu výrazů třeba pro získání minima (MIN) nebo maxima (MAX), hledat hodnoty mezi zadanými hranicemi (BETWEEN), seskupovat výsledky podle hodnot (GROUP BY s možnou dodatečnou omezující podmínkou HAVING) apod. Berte tedy tento příspěvek skutečně jen jako stručný úvod do použití příkazu Select.
Jazyk SQL (z anglického Structured Query Language) asi není třeba dlouze představovat: Řada uživatelů počítačů jej zná z desktopových databází...