MySQL aneb u?íme se SQL jazyk (VI.)

Autor: Ji?í Luká? <jirilukas(at)supersvet.cz>, Téma: MySQL, Vydáno dne: 26. 08. 2000

Po men?í letní p?estávce strávené u vody ve stínu lípy a "k?iku" hrajících si d?tí vás op?t vítám u dal?ího v po?adí ji? ?estého pokra?ování na?eho seriálu o SQL jazyku, ve kterém si uká?eme, jak z na?í pokusné tabulky "dostat" po?adované informace a mo?ná i n?co více ...

Av?ak nyní mi dovolte shrnou v?e, co jsme se doposud nau?ili a nastínit to, co nás teprve ?eká. - Jako první z ?ady SQL p?íkaz? jsme si osvojili p?íkaz CREATE TABLE ..., který nám umo?nil zakládat nové tabulky a prakticky nám tím otev?el "vrátka" do databázového sv?ta. Jako dal?í následoval p?íkaz DROP TABLE ... a jeho schopnost "ni?it v?e, co jsme d?íve napáchali", tedy ru?it ji? existující tabulky a v nespolední ?ad? jsme si ukázali, jak takovou nov? zalo?enou tabulku naplnit novými daty za pomoci p?íkazu INSERT INTO ....

Dnes nás ?eká lekce s nadpisem: "Výb?r/výpis dat z tabulky", p?i?em? toto téma nám vysta?í asi na dva díly, dále budou následovat lekce zam??ené na mazaní a úpravu dat ulo?ených v tabulce a v záv?ru na?eho seriálu s názvem "MySQL aneb u?íme se SQL jazyk" si uká?eme n?co málo "fígl?", které by vám m?li uleh?it va?e za?áte?nické pokusy s tímto zajímavým p?ístupek k ukládání, modifikaci, mazání a výb?ru dat z existující DB.

Výb?r/výpis dat z tabulky

Pro výb?r dat z existující (pokud mo?no "zapln?né") tabulky se pou?ívá pom?rn? ?lenitý, ale i p?esto velmi jednoduchý p?íkaz SELECT ..., jeho? kompletní syntaxe by mohla vypadat asi n?jak takto:

SELECT specifikace_výstupních_sloupc? FROM seznam_tabulek
   WHERE výstupní_podmínka
   GROUP BY seskupující_výrazy
   HAVING podmínka_souhrnných_?ádk?
   ORDER BY kritérium_t?íd?ní

Jeliko? jsem si pln? v?dom skute?nosti, ?e takovýto zápis vypadá velmi "slo?it?" a mohl by leckoho odradit od pokra?ování ve studiu SQL jazyka, rozhodl jsem se výklad tohoto SQL p?íkazu rozlo?it na n?kolik men?ích ?ástí, ?ím? se celá v?c zna?n? zjednodu?í a zárove? zp?ístupní v?t?ímu po?tu lidí.

V dne?ní první ?ásti na?eho malého "laboratorního" rozboru p?íkazu SELECT bych se rád zam??il na tento p?íkaz jako takový a sou?asn? bych se také podíval na zoubek dal?ím dv?ma nejzákladn?j?ím podp?íkaz? WHERE a ORDER BY.

V?e si v?ak nejprve uká?eme na malém p?íkladu:

Vzorový p?íklad ?íslo p?t: (Zadání: Vyberte/vyvolejte v?echna data z tabulky "zamestnanec" a se?a?te je dle hodnot ve sloupci "prijmeni"!)

?e?ení:
(?ervený text ... text generovaný MySQL serverem, zelený text ... ná? p?íkaz)

mysql> SELECT * FROM zamestnanec
    -> ORDER BY prijmeni;
+----------------+-------+----------+---------+
| poradove_cislo | jmeno | prijmeni | plat    |
+----------------+-------+----------+---------+
|              1 | Petr  | Novak    | 5000.00 |
|              2 | NULL  | Ryba     |    NULL |
+----------------+-------+----------+---------+
2 rows in set (0.05 sec)

Poznámka k ?e?ení: Výstupní hodnoty NULL v druhém ?ádku znamenají, ?e p?i vkládání tohoto ?ádku nebyly sloupce "jméno" a "plat" napln?ny vstupními daty, ?ili z?stali prázdné!

I kdy? si myslím, ?e z vý?e uvedeného p?íkladu je patrné, ?e celá konstrukce SQL p?íkazu SELECT je opravdu velmi intuitivní a není k ní zapot?ebí v?t?ích komentá??, p?eci jenom bych se rád pozastavil u "hv?zdi?ky" umíst?né na míst? v syntaxi mnou specifikovaném jako specifikace_výstupních_sloupc? a p?iblí?il vám trochu více význam tohoto symbolu.

Jak jsem ji? vý?e nazna?il v "kompletní syntaxi SQL p?íkazu SELECT", hlavním úkolem této ?ásti syntaxe je specifikace v?ech výstupních sloupc? + jejich jmen a to bud p?ímým zápisem jejich ozna?ení (- v na?em p?ípad? tedy: poradove_cislo,jmeno,prijmeni,plat) nebo za pomoci zástupních symbol? jakým nap?. je i vý?e uvedená hv?zdi?ka.

Symbol hv?zdi?ky v této ?ásti syntaxe SQL p?íkazu SELECT nahrazuje kompletní jmenný výpis v?ech sloupc?, která daná tabulka obsahuje!

V p?ípad?, ?e provádíte výpis dat z více ne? jedné tabulky, je nutné v?echny názvy pou?itých tabulek vypsat v ?ásti syntaxe ozna?ené jako: seznam_tabulek. Jména jednotlivých tabulek se od sebe odd?lují ?árkou!

Pokud chcete z jakéhokoli d?vodu na výstupu zm?nit stávající ozna?ení sloupce na jiné, tak je nutné k jeho specifikaci p?ipojit klí?ové slovo AS a nové jméno sloupce. V p?ípad?, ?e chcete, aby se toto nové ozna?ení skládalo z více slov, tak je nezbytné toto nové jméno uzav?ít do uvozovek (nap?: "nove jmeno sloupce").

Vzorový p?íklad ?íslo ?est: (Zadání: Vyberte/vyvolejte sloupce "jmeno","prijmeni" a "plat" z tabulky "zamestnanec", které odpovídají následující podmínce a se?a?te je dle hodnot ve sloupci "plat"! Podmínka: V?echny hodnoty ve sloupci "plat" musí být v?t?í ne? 1000,-- K?. Dále za?i?te, aby jméno sloupce "plat" bylo na výstupu zm?n?no na "mzda".)

?e?ení:

mysql> SELECT jmeno,prijmeni,plat as mzda FROM zamestnanec
    -> WHERE plat>1000
    -> ORDER BY plat;
+-------+----------+---------+
| jmeno | prijmeni | mzda    |
+-------+----------+---------+
| Petr  | Novak    | 5000.00 |
+-------+----------+---------+
1 rows in set (0.06 sec)

Poznámka k ?e?ení: V p?ípad?, ?e se vám neda?í p?epnout na anglickou klávesnici a zapsat tak do p?íkazového ?ádku "platovou podmínku", vyu?ijte "altového triku" a zapi?te do p?íkazu znaménko v?t?í následujícím zp?sobem: Stiskn?te pravý <ALT> a vyukejte na klávesnici ?íslo 62. - Pro znaménko men?í platí ten samý postup s tím, ?e vyukáte ?íslo 60.

P?í?t? dokon?ím komentá? k ?estému vzorovému p?íkladu a ... P?íjemný vstup do posledního prázdninového týdne ...




Copyright supersvet.cz, 1998-2005