_soubory/null.gif) |
|
_soubory/null.gif) |
_soubory/null.gif) |
_soubory/null.gif) |
| PHP - Část XX. (SQL - získávání dat z databáze II.)
|
|
V dnešním článku budeme pokračovat v objasňování SQL příkazu
SELECT. Minule jsme si ukázali, jak jednoduše vypsat všechny údaje z
tabulky nebo jen určité položky. Vše se však vždy aplikovalo na všechny
záznamy v tabulce, což ve většině skriptů nepotřebujeme. Proto můžeme u
tohoto příkazu definovat podmínku, podle které se vypíší jen určité
záznamy. Tato podmínka se v příkazu SELECT zapisuje za klauzuli WHERE. V
podmínce můžeme používat různé operátory, které mají většinou stejný
význam jako v matematice. Mimo ně můžeme pracovat i s tzv. logickými
operátory, které spojují více podmínek v jednu složenou. Nyní si ukážeme
pár příkladů s naší databází a tabulkou z minulých článků. Pokud chceme
vypsat jen jména zaměstnanců, kteří mají plat více než 10000, použijeme
tento příkaz v následující podobě:
SELECT jmeno FROM zamestnanci WHERE plat >
10000;
Abychom získali data z tohoto příkazu pro práci v PHP,
použijeme opět jednu z funkcí, které jsem objasnil v minulém článku.
Nebudu zde uvádět příklady se všemi matematickými operátory, protože mají
stejný význam jako v matematice, neměl by tedy být problém s pochopením
jejich významu. Malý rozdíl však nastane při použití operátoru
'='. Ten totiž nemůžeme použít pro podmínku s textovými
řetězci. Pro výpis jména a platu jen o zaměstnancích, kteří mají plat
přesně 25000 použijeme:
SELECT jmeno, plat FROM zamestnanci WHERE plat =
25000;
Kdybychom však chtěli použít podmínku, která má vypsat vše o
p. Novákovi, nemohli bychom operátor '=' použít, protože se v
podmínce vyskytuje textový řetězec - místo operátoru '='
jazyk SQL nabízí operátor 'LIKE', který má shodný význam jako
operátor '=', jen se používá při práci s textovými řetězci.
Použijeme tedy:
SELECT * FROM zamestnanci WHERE jmeno LIKE "Jan
Novák";
Operátor LIKE s sebou přináší ještě dva znaky,
které mají speciální význam. Tyto znaky se používají v textovém řetězci za
operátorem LIKE. Je to znak '%' a znak
'_'. Znak '%' v textovém řetězci nahrazuje
jakoukoliv skupinu znaků, znak '_' nahrazuje právě jeden
znak. Tento příkaz vypíše jména a adresy zaměstnanců, jejichž jméno začíná
na Jan:
SELECT jmeno, adresa FROM zamestnanci WHERE jmeno LIKE
"Jan%";
Již na začátku tohoto článku jsem uvedl, že podmínky můžeme
kombinovat pomocí logických operátorů, tedy pomocí AND,
OR, NOT. Větší opodstatnění přináší až v
rozsáhlejších databázích, kde je více tabulek s desítkami a stovkami
řádků. V naší malé databázi si maximálně můžeme ukázat jednoduchý příklad,
jak vypsat data o zaměstnancích, kteří mají plat větší než 10000 a
nejmenují se Jan Novák:
SELECT * FROM zamestnanci WHERE (plat > 10000) AND
NOT (jmeno LIKE "Jan Novák");
Pro anglicky nerozumějící jen uvádím, že AND znamená 'a', OR
znamená 'nebo' a NOT znamená 'ne'. Jejich použití se odvozuje od jejich
významu. Samotný příkaz SELECT umožňuje použít několika příkazů, z nichž
si zde uvedeme dva. Příkaz Count() a příkaz
Avg(). Příkaz Count() slouží pro zjištění počtu
záznamů a příkaz Avg() slouží pro zjištění průměrné hodnoty
položky. Nyní si ukážeme, jak jednoduše zjistit průměrný plat
zaměstnanců:
SELECT Avg(plat) FROM zamestnanci;
Pokud bychom chtěli zjistit počet zaměstnanců, museli bychom
napsat:
SELECT Count(*) FROM zamestnanci;
Příště se naučíme pomocí WHERE propojovat více tabulek a
dokončíme příkaz SELECT.
| Hodnocení článku |
1 | 2 | 3 | 4 | 5 Aktuální známka: 2.06
(Počet známek: 438)
| |
|
_soubory/null.gif) |
_soubory/null.gif) |
_soubory/null.gif) |