PHP - Část XX. (SQL - získávání dat z databáze II.) - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

PHP - Část XX. (SQL - získávání dat z databáze II.)

13. listopadu 2000, 00.00 | 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.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: