Začínáme s MySQL 13 – vestavěné funkce

Po předchozích dvou dílech věnovaných importu resp. exportu vám dnes povím něco o základních vestavěných funkcích, pomocí nichž si můžete podstatně zjednodušit práci.
Příkaz SELECT totiž umí pracovat s dost podstatnou věcičkou, a tou jsou funkce. Pomocí nich pak můžete mnohdy nádherně vytvořit konečný výstup, se kterým byste dlouho ztráceli čas u koncové aplikace. Nač taky – MySQL to vše umožní udělat rovnou. Navíc rychle a efektivně.

Funkce se v MySQL rozdělují do čtyř skupin: matematické, pro práci s řetězci (textem), logické a funkce pro práci s datumem a časem (těm se pro jejich rozsah budu věnovat v příštím díle). K čemu slouží jednotlivé typy funkcí, je myslím dost jasné, a tak se můžeme rovnou podívat na první skupinu funkcí – funkce matematické. Jen podotýkám, že zde nebudu popisovat veškeré funkce, ale pouze ty základní. Jejich kompletní výčet naleznete samozřejmě v manuálu, který je přiložen u distribuce.

Matematické funkce

Matematické funkce, jak již název napovídá, slouží k provádění různých matematických operací. Operace se provádějí za pomocí základních operátorů a u složitějších výrazů využijete některé základní funkce.

Mezi nejzákladnější operace patří sčítání, odčítání, násobení a dělení (jak jinak). Potřebujete-li tedy sečíst do výstupu dva sloupce, pak využijete operátor +:

SELECT (pole1 + pole2) AS vysledek FROM nazev_tabulky;

Tento zmíněný příklad vytvoří na výstupu pole vysledek, které bude obsahovat součet hodnot z polí pole1 a pole2. Obdobným způsobem můžete využít i ostatní operace:

SELECT (pole1 - pole2) AS vysledek FROM nazev_tabulky;
SELECT (pole1 *  pole2) AS vysledek FROM nazev_tabulky;
SELECT (pole1 /  pole2) AS vysledek FROM nazev_tabulky;

Dalším operátorem, který doplňuje předchozí operátory, je MOD (). Mnoho programátorů tento operátor zná z různých programovacích jazyků a ví, že vrací zbytek po celočíselném dělení. Použití je následující:

SELECT MOD(21, 5) AS vysledek;

(Upozornění: Mezi funkcí a závorkou s parametry nedělejte mezeru! MySQL zde neignoruje mezery.)

Celočíselný zbytek je 1 a tato hodnota se také zobrazí ve výstupním poli vysledek. Místo čísel můžete samozřejmě dosadit názvy příslušných sloupců. Další věc, která se vám jistě bude hodit, je součet všech hodnot ve sloupci. To realizuje za pomocí funkce SUM():

SELECT SUM(pole1) AS vysledek FROM nazev_tabulky;

Často se taktéž může hodit počet záznamů v tabulce. K tomu slouží funkce COUNT():

SELECT COUNT<) AS vysledek FROM nazev_tabulky;

S pomocí této funkce můžete kromě počtu záznamů zjistit i to, kolik je v některém sloupci neprázdných hodnot. Jedinou obměnou oproti předcházejícímu příkladu je, že do závorky místo hvězdičky uvedete název příslušného pole.

Může se rovněž stát, že budete chtít vypočítat průměr. Učiníte tak funkcí AVG():

SELECT AVG(pole1) AS vysledek FROM nazev_tabulky;

Takto formulovaný příkaz vypočítá průměr všech neprázdných hodnot v poli1.

Toto je tedy výčet těch nejzákladnějších a svým způsobem i nejprimitivnějších matematických funkcí, se kterými se můžete v MySQL setkat. Následující tabulka uvádí přehled některých dalších:

Název funkce Popis
ABS (x) Vrací absolutní hodnotu čísla x.
MAX (pole) Vrací maximální hodnotu z čísel uvedených v poli.
MIN (pole) Vrací minimální hodnotu z čísel uvedených v poli.
POWER (x, y) Umocní číslo x číslem y.
ROUND (x) Vrací zaokrouhlené číslo x.
ROUND (x, y) Vrací zaokrouhlené číslo x. Toto číslo je přitom zaokrouhleno na y desetinných míst.
SQRT (x) Vrací odmocninu z čísla x.
TRUNCATE (x, y) Vrací reálné číslo x, od kterého je odříznuto y desetinných míst.

Funkce pro práci s textovými řetězci

Další významnou skupinou, ne-li nejvýznamnější, jsou funkce, které pracují s textovými řetězci. Nejzákladnější operací zde bude spojování řetězců z více polí do jednoho výstupního. Při tom využijete funkci CONCAT():

SELECT CONCAT(pole1, pole2) AS vysledek FROM nazev_tabulky;

Rád bych podotknul, že tímto způsobem nemusíte spojovat pouze dva řetězce, ale může jich být i více. Podobnou funkcí je funkce SUBSTRING(). Ta vám umožní vybrat z textového řetězce pouze část. Tato funkce má celkem tři parametry. První udává textový řetězec, se kterým chcete pracovat , druhý udává pozici znaku, od kterého chcete začít "odsekávat", a poslední udává počet znaků, které chcete "odseknout". Následující příklad vrátí pouze první dva znaky:

SELECT SUBSTRING("Pavel", 1, 2) AS vysledek;

Kromě zmíněných funkcí CONCAT() a SUBSTRING() existují i další funkce, které stojí přinejmenším za stejnou pozornost. Velice zajímavé funkce jsou UCASE () a LCASE():

SELECT UCASE(pole1) AS vysledek FROM nazev_tabulky;
SELECT LCASE(pole2) AS vysledek FROM nazev_tabulky;

Zatímco první zmíněná funkce UCASE() převádí všechny znaky v řetězci na velká písmena, je funkce LCASE() pravým opakem. Dalšími funkcemi, které čas od času využijete, jsou funkce TRIM(), LTRIM() a RTRIM(). Tyto funkce slouží k odstranění mezer. Funkce LTRIM() přitom odstraňuje prázdné znaky vlevo před řetězcem. Opakem je RTRIM(), který je odstraňuje vpravo, a skloubením těchto dvou funkcí je TRIM(), který odstraní prázdné znaky nalevo i napravo.

SELECT  TRIM("    Pavel    ") AS vysledek;

Výsledný řetězec bude bez úvodních a závěrečných mezer. Zajímavou možností je rovněž možnost zjistit délku řetězce. Učiníte tak s pomocí funkce LENGTH():

SELECT LENGTH("Pavel") AS vysledek;

Výsledek je 5.

Uvedl jsem výčet nejzákladnějších funkcí pro práci s textovými řetězci. V následující tabulce naleznete ještě některé další:

Název funkce Popis
INSERT (puv_retezec, pocatek, poc_znaku, text) Tato funkce nahradí určitou část řetězce jiným textovým řetězcem.
INSTR (x, y) Zjistí pozici znaku y v řetězci x.
LEFT (x, y) Vrací prvních y znaků z řetězce x.
POSITION (x, y) Vrací pozici prvního výskytu řetězce x v řetězci y.
RIGHT (x, y) Vrací posledních y znaků z řetězce x.
STRCMP (x, y) Tato funkce vrací 1, pokud se řetězec x shoduje s řetězcem y. Při tomto porovnávání se rozlišuje i velikost písmen.

Logické funkce

Zajímavou skupinou funkcí v MySQL jsou logické funkce. Tyto funkce umožňují na vcelku primitivní úrovni vykonávat různé podmínky. Asi nejčastěji se setkáte s funkcemi IF(), IFNULL() a CASE. Nyní krátce popíši jednotlivé z nich.

Funkce IF() očekává 3 parametry. První je podmínka, která podle vyhodnocení vrátí buďto druhý parametr (pravda), nebo třetí parametr (nepravda). Pro lepší pochopení uvedu praktický příklad:

SELECT IF(pole1>pole2, "Pole1 je větší", "Pole2 je větší") AS vysledek FROM nazev_tabulky;

Jak je tedy patrné, pokud bude pole1 větší jak pole2, pak bude vrácen řetězec "Pole1 je větší" – v opačném případě "Pole2 je větší". Možná někoho z vás napadlo, že by to šlo řešit i přes klauzuli WHERE. To je sice pravda, ale ujišťuji vás, že tento způsob je podstatně rychlejší, a tudíž tolik nezatěžuje SQL server.

Další zajímavou funkcí je funkce IFNULL(). Ta obsahuje celkem dva parametry. První obsahuje podmínku, která v případě, že výsledek podmínky obsahuje prázdnou hodnotu, vrátí druhý parametr. Tato zdánlivě bezvýznamná podmínka může být velice užitečná, jak ostatně naznačuje následující příklad:

SELECT IFNULL((100/0), 0) AS vysledek;

Pokud byste v tomto případě nepoužili funkci IFNULL(), byla by vrácena prázdná hodnota, protože bylo děleno nulou.

Poslední funkcí, o které se chci dnes zmínit, je funkce CASE(). Tato funkce je vlastně ekvivalentem k funkci IF() pouze s tím rozdílem, že zde můžete porovnávat více než jen dvě hodnoty. Více napoví následující příklad:

SELECT CASE 1 WHEN pole1="Pavel" THEN 1 WHEN pole2="Pavel" THEN 2 WHEN pole3="Pavel" THEN 3 ELSE 0 END;

Krátce k vysvětlení. Pokud pole1 obsahuje řetězec "Pavel", pak je vrácena jednička. Neobsahuje-li pole1 tento řetězec, je vyhodnocována další podmínka, tj. jestli pole2 je rovno témuž řetězci. Takovýmto způsobem se testuje jedna podmínka za druhou do té doby, dokud není některá z nich splněna. Pokud není splněna ani jedna, pak je vrácena část, která je uvedena za ELSE.

Aby byl výklad o logických funkcích kompletní, je třeba se zmínit i o logických operátorech. S pomocí nich se totiž skládají výrazy, které – pokud všechny hodnoty splňují podmínku – vrací 1 neboli true (pravda). Nejčastěji se setkáte s operátory AND, OR a NOT.

Operátor AND je vyhodnocen jako pravda, jsou-li všechny hodnoty pravdivé. Pro ilustraci uvedu následující příklad:

SELECT 10 AND 20 AND 30;

Všechny hodnoty (10,20,30) jsou pravdivé, a proto je celý výraz pravdivý (true či 1). Oproti tomu operátor OR je vyhodnocen jako pravdivý tehdy, je-li alespoň jeden z výrazů pravdivý. Třetí operátor (NOT) slouží k negaci výrazu.

SELECT NOT (20);

Předcházející příklad by byl za normálních okolností vyhodnocen jako pravdivý, pokud by to operátor NOT nenegoval. Takhle je celý výraz nepravdivý (0 či false).

Závěrem

Tak to by bylo pro dnešek vše. V příštím díle zakončím povídání o funkcích funkcemi, které souvisí s datumem a časem.
Diskuze (10) Další článek: Upgrade chipsetu od VIA pro Pentium 4

Témata článku: Software, Programování, Různé znaky, Funkce, From, MySQL, Textové pole, Sloupec, Trim, Pole, Fun, Vesta, Základní popis, Code, Mezera, Reálné číslo, Znak, Ostatní operace, Nota, Zajímavá funkce, Select, Textový řetězec


Určitě si přečtěte

10 novinek Androidu 10, které vás budou bavit

10 novinek Androidu 10, které vás budou bavit

Jan Láska, Vladislav Kluska | 28

Zorin OS 15: Vyzkoušejte další hezký a nenáročný linux pro mamku a taťku

Zorin OS 15: Vyzkoušejte další hezký a nenáročný linux pro mamku a taťku

** Ačkoliv je grafických linuxů plný internet, stále vládnou Windows ** Jeden z nich se jmenuje Zorin OS a nedávno se dočkal aktualizace ** Dělají jej dva kluci z Irska a je fakt hezký

Jakub Čížek | 116

Nejlepší příslušenství k počítači. Tipy na osvědčené klávesnice, tiskárny, routery…

Nejlepší příslušenství k počítači. Tipy na osvědčené klávesnice, tiskárny, routery…

** Tipy na klávesnice, myši, routery, tiskárny, sluchátka a další věci k počítačům ** Poradíme, s jakými produkty neuděláte chybu ** Vybíráme jak příslušenství na běžnou práci, tak na hraní her

David Polesný | 20

Co je TikTok: Svérázná sociální síť chytla mladé uživatele, už jich má už 1,5 miliardy

Co je TikTok: Svérázná sociální síť chytla mladé uživatele, už jich má už 1,5 miliardy

** Sociální síť TikTok získala stamiliony uživatelů a stále roste ** Jaký obsah na ní najdete a co můžete v jejím rámci čekat? ** Je to zábava pro mladé, nebo platforma pro úchyláky?

Karel Kilián | 34


Aktuální číslo časopisu Computer

Megatest: 20 powerbank s USB-C

Test: mobily do 3 500 Kč

Radíme s výběrem routeru

Tipy na nejlepší vánoční dárky