Před časem jsme na DSL publikovali dva texty dotýkající se databází. Nyní je čas přikročit k náročnější oblasti, jakou je dotazování se na data v databázi uložená. Existují sice i pěkné grafické nástroje, ale programátoři se neobejdou bez klasické SQL syntaxe.
K dotazování do databáze se dle standardu používá příkaz SELECT. Ten slouží zejména pro výběr údajů z databázových tabulek, ale umožňuje realizovat minimálně operace výběru, omezení, projekce a spojení. Příkaz SELECT musí označovat nejen jaké parametry chceme poslat na výstup dotazu (sloupce výsledné tabulky), ale musí obsahovat i podmínky výběru. Syntax příkazu SELECT je poměrně složitá a v některých detailech se pro jednotlivé databázové servery velice liší. Zjednodušená základní syntax vypadá takto:
SELECT
seznam_položek_výstupu
FROM
název tabulky
WHERE
seznam podmínek
Jak vidno, za příkaz SELECT jsou vepsány sloupce, které vás ve výstupu zajímají. Pokud místo jmen sloupců oddělených čárkou uvedete symbol hvězdičky, pak jsou vypsány všechny sloupce tabulky. Za příkaz FROM se napíše název tabulky a za WHERE pak seznam podmínkových klauzulí. Pro vypsání celé tabulky pak použijeme tuto syntax:
SELECT * FROM název_tabulky;
Představme si nyní tabulku zaměstnanců firmy, ve které jsou veškeré údaje o zaměstnancích, celkem jednoduše si z takovéto tabulky „vytáhnete“ informace o určitém zaměstnanci:
SELECT * FROM tab_zamestnanci WHERE jmeno=‘Josef Novák‘
Je nutné upozornit na fakt, že obvykle nejsou dotazy do databáze takto triviální jako v předchozích případech, ale je nutné využít více podmínek k nalezení výsledku. Pro spojení více podmínek lze využít logické spojky AND nebo OR, které se chovají dle definice výrokové logiky. Neboli takto:
Výraz_1 AND Výraz_2 – musí platit oba výrazy současně
Výraz_1 OR Výraz_2 – musí platit alespoň jeden výraz
V praxi pak může vypadat složitější dotaz do stejné tabulky jako v minulém příkladě třeba takto:
SELECT
jmeno, zarazeni, funkce
FROM
tab_zamestnanci
WHERE
plat >= 20000 AND
plat <= 25000 AND
město = ‘Plzeň‘
Výsledkem dotazu je pak informace o jménu, zařazení a funkci takových zaměstnanců, kteří mají plat v rozpětí 20-25 tisíc korun a jsou zároveň obyvateli Plzně. Pokud budeme chtít výsledky z dotazu setřídit, použijeme klauzuli ORDER BY, ale o ní až dále. Při dotazech lze dále v rámci příkazu SELECT využít několik klauzulí. Jejich podrobné rozebrání přesahuje rámec tohoto článku, ale aspoň základní informace si k nim povíme.
AS
Tato klauzule slouží jako alias k určitému sloupci tabulky. Využití v rámci dotazu je nepovinné a uvádí se do uvozovek. Dále lze zde využít znaky mezery, velká a malá písmena apod. Ideální je alias využívat u sloupců, které nemají název dle našich představ, nebo jsou nějakým způsobem vypočítávány a tak by byl v záhlaví vidět jejich vzorec.
CASE
Tento příkaz dokáže nahradit určité data z databáze dle zadaných podmínek jiným textem. V zásadě jde o podobnou funkci, jako je automatické formátování v MS Excel. Nejlepší bude uvést příklad, kdy se mzda nahrazuje mzdovými třídami dle uvedených podmínek.
SELECT jmeno, ‘mzdova trida‘ =
CASE WHEN mzda <= 15000 THEN ‘Trida 1‘
WHEN mzda > 15000 AND <= 28000 THEN ‘Trida 2‘
WHEN mzda > 28000 AND <= 35000 THEN ‘Trida 3‘
ELSE ‘manazersky plat‘ END
FROM tab_zamestnanci;
GROUP BY
Pomocí této klauzule lze rozdělovat záznamy databáze do skupin a k jejímu zvládnutí budete potřebovat lépe nastudovat matematické funkce a syntaktická pravidla.
Pro další filtraci a práci s dotazy do databáze budete muset zvládnout klauzule HAVING, JOIN, ORDER BY či UNION. K jejich nastudování doporučujeme komplexní SQL literaturu nebo uživatelskou příručku.
9. 3. 2007
Autor: David Procházka
Seznam.cz přišel s novinkou pro turisty. Společnost přidala novou funkci do portálu Mapy.cz. Jedná se o možnost...
Stále více hlasů ze zasvěcených kruhů mluví o tom, že Microsoft hodlá v srpnu představit svůj nejnovější operační...
Google se ve svých akvizicích zaměřuje na firmy, které pracují s umělou inteligencí a pokročilou analýzou dat...
Zítra opět usedneme k televizím a začne vánoční pohádkový maraton. V dnešním článku najdete velký přehled pohádek a...
Pokud zrovna řešíte, jak zasimulovat Ježíškovo zazvonění tak, aby vás děti neodhalily, máme pro vás pár tipů...
Black Friday odstartoval a s ním i sleva na neomezené tarify od Vodafonu. Pořídit si je můžete za historicky...