 |
|
 |
 |
 |
| PHP - Část XX. (SQL - získávání dat z databáze II.)
další díl seriálu o PHP, věnovaný práci s databází. Detailní vysvětlení příkazu SELECT, možnosti podmínek v WHERE ap.
|
|
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.71 (Počet známek: 6605)
|
|
|
 |
 |
 |