Úvod > Články > SQL #3: Dotazujeme se báze dat

SQL #3: Dotazujeme se báze dat

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.

Závěrem

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

Sdílejte

Přečtěte si také

 

Mapy.cz představují novinku

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...

 

Windows 9: nač ten spěch?

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 nakupuje analytické nástroje: po Emu získal také JetPac

Google se ve svých akvizicích zaměřuje na firmy, které pracují s umělou inteligencí a pokročilou analýzou dat...

Nejčtenější články

Vodafone zlevňuje pevný internet, první půl rok zaplatíte jen za 299 Kč

 

Vodafone spustil novou kampaň na pevný internet. V rámci ní nabídne všechny rychlosti na první půlrok jen za 299 Kč.

HBO Max v Česku od května nahradí nová služba Max

 

Společnost Warner Bros Discovery oznámila, že v Evropě spustí novou platformu Max 21. května. To se týká i Česka a...

Seznam.cz připravuje vlastní předplatné, reklamě se ale nevyhnete

 

Seznam.cz testují nové předplatné. V placené verzi přestane využívat vaše data k cílení reklamy. Reklamu ale na...