SQL - vstavané funkcie: Rozdiel medzi revíziami
| (50 medziľahlých úprav od 8 ďalších používateľov nie je zobrazených) | |||
| Riadok 1: | Riadok 1: | ||
{{Skripta_dbs}}  | {{Skripta_dbs}}  | ||
| − | + | Databázový systém MySQL obsahuje vstavané funkcie<ref>MySQL Useful Functions and Clauses - http://www.tutorialspoint.com/mysql/mysql-useful-functions.htm </ref>, ktoré môžeme rozdeliť do kategórií:  | |
| − | Databázový systém   | + | |
| − | *  | + | *agregačné,  | 
| − | *  | + | *matematické,   | 
| − | *  | + | *textové,  | 
| − | *  | + | *štatistické,  | 
| − | *  | + | *dátumové,  | 
| − | *  | + | *šifrovacie a komprimačné.  | 
| + | |||
| + | == Agregačné funkcie  ==  | ||
| − | |||
Agregačné funkcie vykonávajú nad stĺpcami tabuľky matematické operácie.    | Agregačné funkcie vykonávajú nad stĺpcami tabuľky matematické operácie.    | ||
| − | |||
| − | |||
| − | '''Úloha:''' Zisti, koľko je v tabuľke city miest s kódom krajiny SVK (teda na Slovensku)  | + | === COUNT()  ===  | 
| + | |||
| + | Funkcia COUNT slúži na výpočet počtu záznamov v SQL dotaze.   | ||
| + | |||
| + | '''Úloha:''' Zisti, koľko je v tabuľke ''city'' miest s kódom krajiny SVK (teda na Slovensku)    | ||
<source lang="sql">  | <source lang="sql">  | ||
   SELECT COUNT(*) FROM city WHERE CountryCode = "SVK"  |    SELECT COUNT(*) FROM city WHERE CountryCode = "SVK"  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class=wikitable  | ||
| + | |-  | ||
| + | !COUNT(*)  | ||
| + | |-  | ||
| + | |3  | ||
| + | |}  | ||
| + | |||
| + | === MAX() a MIN()  ===  | ||
| + | |||
| + | Funkcia MAX(), resp. MIN() slúži na zistenie maximálnej, resp. minimálnej hodnoty z určitej množiny hodnôt.   | ||
| + | |||
| + | |||
| + | '''Úloha:''' Zisti, ktoré mesto má najväčšiu populáciu.   | ||
| + | |||
| + | Riešenie: Úlohu si rozdelíme na 2 časti:   | ||
| + | |||
| + | #Zistenie maximálnej populácie z tabuľky miest   | ||
| + | #Výber mesta s touto populáciou. Pre riešenie tejto úlohy použijeme vnorený príkaz SELECT  | ||
| + | |||
| + | Podúloha 1:   | ||
| + | <source lang="sql">  | ||
| + |  SELECT MAX(Population) FROM city  | ||
| + | </source> Výsledok: 10500000   | ||
| + | |||
| + | Podúloha 2:   | ||
| + | <source lang="sql">  | ||
| + |  SELECT *  FROM city where Population=  | ||
| + |      (SELECT MAX(Population) FROM city)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class=wikitable  | ||
| + | |-  | ||
| + | !ID  | ||
| + | !Name  | ||
| + | !CountryCode  | ||
| + | !District  | ||
| + | !Population  | ||
| + | |-  | ||
| + | |1024  | ||
| + | |Mumbai (Bombay)  | ||
| + | |IND  | ||
| + | |Maharashtra  | ||
| + | |10500000  | ||
| + | |}  | ||
| + | |||
| + | === AVG()  ===  | ||
| + | |||
| + | Funkcia AVG() počíta aritmetický priemer množiny hodnôt.   | ||
| + | |||
| + | |||
| + | '''Úloha:''' Aká je priemerná populácia na Slovensku?   | ||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT AVG(population) FROM city WHERE CountryCode="SVK"  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! AVG(population)  | ||
| + | |-  | ||
| + | | 261381.0000  | ||
| + | |}  | ||
| + | |||
| + | === SUM()  ===  | ||
| + | |||
| + | Funkcia SUM() počíta súčet hodnôt danej množiny hodnôt.   | ||
| + | |||
| + | |||
| + | '''Úloha:''' Aký je súčet obyvateľov miest na Slovensku?   | ||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT SUM(population) FROM city WHERE CountryCode="SVK"   | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! SUM(population)  | ||
| + | |-  | ||
| + | | 784143  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | === STD()  ===  | ||
| + | |||
| + | Funkcia STD() počíta štandardnú odchýlku množiny hodnôt.   | ||
| + | |||
| + | |||
| + | '''Úloha:''' Aká je štandardná odchýlka počtu obyvateľov v mestách Českej republiky?   | ||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT STD(population) FROM city WHERE CountryCode="CZE"   | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! STD(population)  | ||
| + | |-  | ||
| + | | 321564.4992   | ||
| + | |}  | ||
| + | |||
| + | |||
| + | == Matematické funkcie  ==  | ||
| + | |||
| + | '''ABS(X)'''   | ||
| + | |||
| + | Funkcia ABS vypočíta absolútnu hodnotu z čísla X.  | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + |    SELECT ABS(-3)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! ABS(-3)  | ||
| + | |-  | ||
| + | | 3  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''SIN(X)'''   | ||
| + | |||
| + | Funcia SIN vypočíta sínus uhla X. Uhol X je v radiánoch.  | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + |    SELECT SIN(PI()/2)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !SIN(PI()/2)  | ||
| + | |-  | ||
| + | |1  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''COS'''   | ||
| + | |||
| + | Funcia COS vypočíta kosínus uhla X. Uhol X je v radiánoch.  | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + |    SELECT COS(0)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !COS(0)  | ||
| + | |-  | ||
| + | |1  | ||
| + | |}  | ||
| + | |||
| + | '''CEIL(X)'''   | ||
| + | |||
| + | Funkcia CEIL zaokrúhli číslo X smerom hore.  | ||
| + | |||
| + | Príklad: <source lang="sql">  | ||
| + |   SELECT CEIL(7.55)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !CEIL(7.55)  | ||
| + | |-  | ||
| + | |8  | ||
| + | |}  | ||
| + | |||
| + | '''EXP( X )'''   | ||
| + | |||
| + | Táto funkcia vracia hodnotu e (základ prirodzeného logaritmu), umocnenú na mocninu X.  | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + |    SELECT EXP(3)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !EXP(3)  | ||
| + | |-  | ||
| + | |20.0855369231877  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''FLOOR(X)'''   | ||
| + | |||
| + | Funkcia FLOOR zaokrúhli číslo X smerom dole.  | ||
| + | |||
| + | Príklad: <source lang="sql">  | ||
| + |   SELECT FLOOR(7.55)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !FLOOR(7.55)  | ||
| + | |-  | ||
| + | |7  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | |||
| + | '''FORMAT(X,N)'''   | ||
| + | |||
| + | Funkcia FORMAT() sa používa na formátovanie čísla X. N je počet desatinných miest čísla X.  | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + |    SELECT FORMAT(423423234.65434453,3)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !FORMAT(423423234.65434453,3)  | ||
| + | |-  | ||
| + | |423,423,234.654  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''LOG(X)'''   | ||
| + | |||
| + | Funkcia LOG vypočíta prirodzený logaritmus z čísla X (Poznámka: prirodzený logaritmus má základ ''e'').  | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + |    SELECT LOG(10)   | ||
| + | </source>   | ||
| + | |||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !LOG(10)  | ||
| + | |-  | ||
| + | |2.30258509299405  | ||
| + | |}  | ||
| + | |||
| + | '''LOG10(X)'''   | ||
| + | |||
| + | Vypočíta desiatkový logaritmus z čísla X.  | ||
| + | |||
| + | Príklad: <source lang="sql">  | ||
| + |    SELECT LOG10(100)  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !LOG10(100)  | ||
| + | |-  | ||
| + | |2  | ||
| + | |}  | ||
| + | |||
| + | '''PI()'''   | ||
| + | |||
| + | Táto funkcia vráti hodnotu Ludolfovho čísla pí.  | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + |    SELECT PI()  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !PI()  | ||
| + | |-  | ||
| + | |3.141593  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''POW(''X, Y'')'''   | ||
| + | |||
| + | Táto funkcia vracia hodnotu X umocnenú na Y. Je to alias k funkcii POWER.  | ||
| + | |||
| + | Príklad: <source lang="sql">  | ||
| + |    SELECT POWER(3,3)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !POWER(3,3)  | ||
| + | |-  | ||
| + | |27  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | |||
| + | '''ROUND (X,D)'''   | ||
| + | |||
| + | Táto funkcia vracia X zaokrúhlené na celé číslo. Ak je použitý druhý argument(D) potom funkcia zaokrúhli X na D desatiných miest.  | ||
| + | |||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">   | ||
| + |    SELECT ROUND(5.693893,2)  | ||
| + | </source>  | ||
| + | |||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !  ROUND(5.693893,2)  | ||
| + | |-  | ||
| + | | 5.69  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''SQRT(''X'')'''   | ||
| + | |||
| + | Funkcia SQRT vypočíta druhú odmocninu čísla X. Ak je X záporné funkcia SQRT vráti ''NULL''.   | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT SQRT(16)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! SQRT(16)  | ||
| + | |-  | ||
| + | | 4.000000   | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''TAN(X)'''  | ||
| + | |||
| + | Funkcia TAN - vypočíta tangens uhla X. Uhol X je v radiánoch.  | ||
| + | |||
| + | Príklad: Aká je hodnota TAN(45)?   | ||
| + | <source lang="sql">  | ||
| + |    SELECT TAN(PI()/4)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! SELECT TAN(PI()/4)  | ||
| + | |-  | ||
| + | | 1  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''RAND()'''   | ||
| + | |||
| + | Funkcia RAND generuje náhodné číslo v intervale (0,1).  | ||
| + | |||
| + | |||
| + | Príklad: V príklade budeme generovať 2 náhodné čísla.  | ||
| + | <source lang="sql">  | ||
| + |    SELECT RAND(),RAND()  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! RAND()  | ||
| + | ! RAND()  | ||
| + | |-  | ||
| + | | 0.516074677478592  | ||
| + | | 0.469642581855545  | ||
| + | |}  | ||
| + | |||
| + | == Textové funkcie  ==  | ||
| + | |||
| + | '''CHAR(X,...)'''   | ||
| + | |||
| + | Funkcia CHAR() prevedie každý svoj argument X na znak podľa použitej znakovej tabuľky.  | ||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT CHAR(77,121,83,81,76)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! CHAR(77,121,83,81,76)  | ||
| + | |-  | ||
| + | | MySQL  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''CONCAT'''   | ||
| + | |||
| + | Funkcia CONCAT() sa používa na spojenie dvoch reťazcov do jedného reťazca.  | ||
| + | |||
| + | Úloha: V tabuľke ''city'' spoj atribúty: ''name'' a ''CountryCode'' do jedného stĺpca s názvom ''Mesto''  | ||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT concat(name, " - ", countrycode) AS Mesto FROM city  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !Mesto  | ||
| + | |-  | ||
| + | |Košice - SVK  | ||
| + | |-  | ||
| + | |Prešov - SVK  | ||
| + | |-  | ||
| + | |Kabul - AFG  | ||
| + | |-  | ||
| + | |Qandahar - AFG  | ||
| + | |-  | ||
| + | |Herat - AFG  | ||
| + | |-  | ||
| + | |Mazar-e-Sharif - AFG  | ||
| + | |-  | ||
| + | |Amsterdam - NLD  | ||
| + | |-  | ||
| + | |Rotterdam - NLD  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''FIELD(str, str1, str2, str3, ...)'''   | ||
| + | |||
| + | Funkcie FIELD vracia index (pozícia začínajúca na hodonte 1) reťazca ''str'' v reťazcoch  ''str1, str2, str3'', ... . Ak nie je reťazec ''str'' nájdený, funkcia vráti 0.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo')   | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo')   | ||
| + | |-  | ||
| + | | 2  | ||
| + | |}  | ||
| + | |||
| + | '''LOWER(str)'''   | ||
| + | |||
| + | Funkcia LOWER() konvertuje reťazec ''str'' na malé písmená.  | ||
| + | |||
| + | Úloha: Konvertuj kód krahiny (''code'') na malé písmená v tabuľke ''country''.  | ||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT Name,LOWER(code) from country  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !Name 	  | ||
| + | !LOWER(code)  | ||
| + | |-  | ||
| + | |Afghanistan 	||afg  | ||
| + | |-  | ||
| + | |Netherlands 	||nld  | ||
| + | |-  | ||
| + | |Netherlands Antilles 	||ant  | ||
| + | |-  | ||
| + | |Albania 	||alb  | ||
| + | |-  | ||
| + | |Algeria 	||dza  | ||
| + | |-  | ||
| + | |American Samoa ||	asm  | ||
| + | |-  | ||
| + | |Andorra 	||and  | ||
| + | |-  | ||
| + | |Angola 	||ago  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''UPPER'''   | ||
| + | |||
| + | Funkcia UPPER() konvertuje reťazec na veľké písmená.  | ||
| + | |||
| + | |||
| + | '''Úloha:''' konvertuj názov mesta (''name'') na veľké písmená v tabuľke ''city''.  | ||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT UPPER(name) FROM city  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !upper(name)  | ||
| + | |-  | ||
| + | |MAZAR-E-SHARIF  | ||
| + | |-  | ||
| + | |AMSTERDAM  | ||
| + | |-  | ||
| + | |HAAG  | ||
| + | |-  | ||
| + | |UTRECHT  | ||
| + | |-  | ||
| + | |EINDHOVEN  | ||
| + | |-  | ||
| + | |TILBURG  | ||
| + | |}  | ||
| + | |||
| + | '''LTRIM(''str'')'''   | ||
| + | |||
| + | Zo začiatku reťazca ''str'' odstráni nečitateľné znaky (medzery).   | ||
| + | |||
| + | Príklad: <source lang="sql">  | ||
| + |    SELECT LTRIM('   ahoj DBS')  | ||
| + | </source>   | ||
| + | |||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !LTRIM('   ahoj DBS')  | ||
| + | |-  | ||
| + | |ahoj DBS  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''RTRIM(''str'')'''   | ||
| + | |||
| + | Z konca reťazca ''str'' odstráni nečitateľné znaky (medzery).   | ||
| + | |||
| + | Príklad: <source lang="sql">  | ||
| + |    SELECT RTRIM('ahoj DBS   ')  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !RTRIM('ahoj DBS   ')  | ||
| + | |-  | ||
| + | |ahoj DBS  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''TRIM'''   | ||
| + | |||
| + | Zo začiatku a konca reťazca ''str'' odstráni nečitateľné znaky (medzery).   | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + |    SELECT TRIM('   ahoj DBS    ')  | ||
| + | </source>   | ||
| + | |||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !TRIM('   ahoj DBS   ')  | ||
| + | |-  | ||
| + | |ahoj DBS  | ||
| + | |}  | ||
| + | |||
| + | == Dátumové funkcie  ==  | ||
| + | |||
| + | '''ADDDATE(date,INTERVAL days)'''   | ||
| + | |||
| + | Funkcia ADDDATE pripočíta k zadanému dátumu ''date'' zadaný počet dní (hodnota ''days''). Parameter ''days'' môžeme zadávať pomocou funkcie INTERVAL, alebo ako celé číslo.  | ||
| + | |||
| + | Príklad:   | ||
| + | <source lang="sql">  | ||
| + | SELECT ADDDATE('2010-12-20',10),  | ||
| + |        ADDDATE('2010-12-20', INTERVAL 11 DAY)  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:   | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !ADDDATE('2010-12-20',10)   | ||
| + | !ADDDATE('2010-12-20', INTERVAL 11 DAY)  | ||
| + | |-  | ||
| + | |2010-12-30  | ||
| + | |2010-12-31  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''ADDTIME(T1,T2)'''   | ||
| + | |||
| + | Funica ADDTIME pripočíta k času T1 čas T2. Výsledok je súčet týchto časov.  | ||
| + | |||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT ADDTIME('2010-12-20 10:00:0.0','1 1:1:1.000002')  | ||
| + | </source>   | ||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !ADDTIME('2010-12-20 10:00:0.0','1 1:1:1.000002')  | ||
| + | |-  | ||
| + | |2010-12-21 11:01:01.000002  | ||
| + | |}                           | ||
| + | |||
| + | |||
| + | |||
| + | '''CURRDATE'''   | ||
| + | |||
| + | Vracia aktuálny dátum ako hodnotu vo formáte 'YYYY-MM-DD' alebo RRRRMMDD, v závislosti na tom, či funkcia je použitá v reťazeci alebo číselnom kontexte.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT CURDATE()  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | |||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !CURDATE()  | ||
| + | |-  | ||
| + | |2010-12-15    | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''CURTIME'''   | ||
| + | |||
| + | Vracia aktuálny čas ako hodnotu v 'HH:MM:SS' alebo HHMMSS formáte, v závislosti na tom, či funkcia je použitá v reťazci alebo číselnom kontexte. Táto hodnota je vyjadrená v aktuálnom časovom pásme.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT CURTIME()  | ||
| + | </source>   | ||
| + | Výsledok:  | ||
| + | |||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !CURTIME()  | ||
| + | |-  | ||
| + | |18:31:48  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | |||
| + | '''DATEDIFF(D1,D2)'''  | ||
| + | |||
| + | Funkcia DATEDIFF vráti rozdiel v dňoch medzi dátumami D1 a D2.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT DATEDIFF('2010-12-31 23:59:59','2010-12-20')    | ||
| + | </source>   | ||
| + | Výsledok:  | ||
| + | |||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !DATEDIFF('2010-12-31 23:59:59','2010-12-20')    | ||
| + | |-  | ||
| + | |11  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''DATE(D)'''   | ||
| + | |||
| + | Z dátumu a času D vyberie len dátum.   | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT DATE('2010-12-31 01:02:03')  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | !DATE('2010-12-31 01:02:03')  | ||
| + | |-  | ||
| + | |2010-12-31  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''DAY'''   | ||
| + | |||
| + | DAY je synonymom pre DAYOFMONTH.  | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | '''DAYNAME(D)'''   | ||
| + | |||
| + | Z dátumu D určí názov dňa.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT DAYNAME('2010-12-16')  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:  | ||
| + | |||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! DAYNAME('2010-12-16')  | ||
| + | |-  | ||
| + | | Thursday  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''DAYOFWEEK(D)'''   | ||
| + | |||
| + | Vráti číslo dňa v týždni (1 = nedeľa, 2 = pondelok, ... , 7 = sobota). Tieto hodnoty indexu zodpovedajú štandardu ODBC<ref>ODBC Scalar Functions - http://msdn.microsoft.com/en-us/library/bb630290.aspx</ref>.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT DAYOFWEEK('2010-12-31 01:02:03')  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! DAYOFWEEK('2010-12-31 01:02:03')  | ||
| + | |-  | ||
| + | | 6  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''DAYOFMONTH(D)'''   | ||
| + | |||
| + | Z dátumu D vyberie číslo dňa, v rozmedzí 0 - 31.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT DAYOFMONTH('2010-12-31 01:02:03')  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! DAYOFMONTH('2010-12-31 01:02:03')  | ||
| + | |-  | ||
| + | |31   | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''DAYOFYEAR'''   | ||
| + | |||
| + | Vracia poradové číslo dňa v roku v rozsahu 1 až 366.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT DAYOFYEAR('2010-12-20')  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! DAYOFYEAR('2010-12-20')  | ||
| + | |-  | ||
| + | | 354  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''HOUR(T)'''   | ||
| + | |||
| + | Funkcia HOUR vyberie z dátumu/času T len hodinu.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT HOUR('2010-12-20 10:12:58.55')  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! HOUR('2010-12-20 10:12:58.55')  | ||
| + | |-  | ||
| + | | 10  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''NOW'''   | ||
| + | |||
| + | Zistí aktuálny dátum a čas.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT NOW()  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! NOW()  | ||
| + | |-  | ||
| + | | 2010-11-03 10:45:55  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''SYSDATE'''   | ||
| + | |||
| + | Vráti aktuálnu hodnotu dátumu a času, podľa systémového času.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |    SELECT SYSDATE()   | ||
</source>  | </source>  | ||
| − | Výsledok:   | + | Výsledok:  | 
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! SYSDATE()    | ||
| + | |-  | ||
| + | | 2010-12-20 12:21:33  | ||
| + | |}  | ||
| + | |||
| + | |||
| + | '''WEEK'''   | ||
| + | |||
| + | Z dátumu  určí číslo týždňa v intervale 1 až 52.  | ||
| + | |||
| + | Príklad:  | ||
| − | |||
<source lang="sql">  | <source lang="sql">  | ||
| − | + |    SELECT WEEK('2010-12-18')  | |
</source>  | </source>  | ||
| − | |||
| − | |||
| − | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! WEEK('2010-12-18')  | ||
| + | |-  | ||
| + | | 50  | ||
| + | |}  | ||
| − | '''  | + | '''YEAR(D)'''  | 
| − | + | Z dátumu D určí rok.   | |
| − | + | ||
| − | + | Príklad:  | |
| + | <source lang="sql">  | ||
| + |    SELECT YEAR('2010-12-20')  | ||
| + | </source>  | ||
| + | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! YEAR('2010-12-20')  | ||
| + | |-  | ||
| + | | 2010  | ||
| + | |}  | ||
| + | |||
| + | == Šifrovacie a komprimačné  ==  | ||
| + | Nasledujúce funkcie ponúkajú šifrovanie, dešifrovanie a hašovanie textových dát<ref>Encryption and Compression Functions - http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html</ref>.  | ||
| + | |||
| + | |||
| + | '''AES_ENCRYPT( ''nezasifrovany_text , kluc'' )'''   | ||
| + | |||
| + | Funkcie AES_ENCRYPT() a AES_DECRYPT() šifrujú a dešifrujú dáta pomocou oficiálneho algoritmu [http://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES](Advanced Encryption Standard). Dĺžka šifrovacieho kľúča je 128 bitov. Dĺžku kľúča sa môže predĺžiť až na 256 bitov.    | ||
| − | |||
<source lang="sql">  | <source lang="sql">  | ||
| − | + |    INSERT INTO test (text,zasifrovane,heslo) VALUES ("kiwiki",AES_ENCRYPT("kiwiki","123456789"),"1234567789")  | |
</source>  | </source>  | ||
| − | |||
| − | + | Výsledok:  | |
| + | [[Image:Sql AES ENCRYPT.png|frame|center|Šifrovanie pomocou AES_ENCRYPT]]   | ||
| + | |||
| + | |||
| + | '''AES_DECRYPT( ''zasifrovany_text , kluc'')'''   | ||
| + | |||
| + | Táto funkcia dešifruje dáta pomocou šifrovacieho algoritmus [http://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES] (Advanced Encryption Standard) <source lang="sql">  | ||
| + |    SELECT text, AES_DECRYPT(zasifrovane,"123456789") AS rozsifrovane ,heslo FROM test  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok:  | ||
| + | [[Image:Sql AES DECRYPT.png|frame|center|Dešifrovanie pomocou AES_DECRYPT]]   | ||
| + | |||
| + | |||
| + | '''COMPRESS( ''str'' ), UNCOMPRESS( ''str'' )'''   | ||
| + | |||
| + | Komprimuje/dekomprimuje reťazec a vráti výsledok ako binárny reťazec. Táto funkcia vyžaduje konfiguráciu MySQL servara tak, aby boli zostavený s kompresnou knižnicu ''zlib''. V opačnom prípade je návratová hodnota vždy NULL. Komprimovaný reťazec môže byť dekomprimovaný funkciou UNCOMPRESS().   | ||
| + | |||
<source lang="sql">  | <source lang="sql">  | ||
| − | + |    INSERT INTO test (text,zasifrovane) VALUES ("kiwiki",COMPRESS("kiwiki"))  | |
| − | + | </source>  | |
| + | |||
| + | Výsledok: [[Image:Sql compress.png|frame|center|Výsledok komprimácie pomocou funkcie COMPRESS]]   | ||
| + | |||
| + | |||
| + | <source lang="sql">  | ||
| + |    SELECT id, text, UNCOMPRESS(zasifrovane) AS dekomprimovane FROM test  | ||
| + | </source>   | ||
| + | |||
| + | Výsledok: [[Image:Sql uncompress.png|frame|center|Výsledok dekomprimácie pomocou funkcie UNCOMPRESS]]   | ||
| + | |||
| + | |||
| + | '''ENCODE(''str,heslo'')'''   | ||
| + | |||
| + | Šifruje dáta ''str'' pomocou nami zadaného šifrovacieho hesla ''heslo''. Výsledok šifrovania je binárny reťazec rovnakej dĺžky ako pôvodný. Na dešifrovanie sa používa funcia DECODE.  | ||
| + | |||
| + | Príklad:  | ||
| + | <source lang="sql">  | ||
| + |  SELECT ENCODE("kiwiki", "heslo")  | ||
</source>  | </source>  | ||
| − | |||
| − | [[Súbor:  | + | Výsledok:  | 
| + | [[Súbor:sql - encode.png|center|frame|Zašifrovanie pomocou funkcie ENCODE]]  | ||
| − | |||
| − | |||
| + | '''DECODE(''crypt_str,heslo'')'''   | ||
| + | |||
| + | Funkcia DECODE je opak funkcie ENCODE. Dešifruje zašifrované dáta funkciou ENCODE pomocou vloženého hesla pri šifrovaní<ref>Decode Demo 1 - http://www.bhatipoglu.com/entry/41/decode-demo-1</ref>.  | ||
| − | |||
| + | Príklad:  | ||
<source lang="sql">  | <source lang="sql">  | ||
| − | + |  SELECT DECODE( ENCODE("kiwiki","heslo"), "heslo")  | |
</source>  | </source>  | ||
| − | |||
| − | |||
| − | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! DECODE( ENCODE("kiwiki","heslo"), "heslo")  | ||
| + | |-  | ||
| + | | kiwiki  | ||
| + | |}  | ||
| − | |||
| + | '''DES_DECRYPT( ''text, [kluc]''), DES_ENCRYPT(''text , kluc'')'''   | ||
| + | |||
| + | Funkcie DES_ENCRYPT() a DES_DECRYPT() šifrujú a dešifrujú dáta pomocou oficiálneho algoritmu [http://en.wikipedia.org/wiki/Data_Encryption_Standard DES]. Použitie je podobné ako pri funkciách ''AES_DECRYPT'' a ''AES_ENCRYPT''.   | ||
| + | |||
| + | |||
| + | |||
| + | '''MD5()''' [http://sk.wikipedia.org/wiki/Message-Digest_algorithm (Message-Digest algorithm) ]  | ||
| + | |||
| + | Hašovacia funkcia, mení vstupné dáta na výstupné dáta fixnej dĺžky.  | ||
| + | |||
| + | Príklad:  | ||
<source lang="sql">  | <source lang="sql">  | ||
| − | + |  SELECT MD5(password) FROM tabulka  | |
</source>  | </source>  | ||
| − | |||
| − | |||
| − | |||
| + | Výsledok:  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | ! MD5(password)  | ||
| + | |-  | ||
| + | | 21232f297a57a5a743894a0e4a801fc3  | ||
| + | |}  | ||
| − | |||
| + | |||
| + | '''SHA1(), SHA()''' [http://sk.wikipedia.org/wiki/Secure_Hash_Algorithm (Secure Hash Algorithm) ]  | ||
| + | |||
| + | Hašovacia funkcia, mení vstupné dáta na výstupné dáta fixnej dĺžky.  | ||
| + | |||
| + | Príklad:  | ||
<source lang="sql">  | <source lang="sql">  | ||
| − | + |  SELECT SHA(password) FROM tabulka  | |
| + |  SELECT SHA1(password) FROM tabulka  | ||
</source>  | </source>  | ||
| − | |||
| − | =  | + | Výsledok:  | 
| − | + | {| class="wikitable"  | |
| − | + | |-  | |
| − | + | ! SHA(password)/SHA1(password)  | |
| − | + | |-  | |
| − | + | | d033e22ae348aeb5660fc2140aec35850c4da997  | |
| − | + | |}  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | '''PASSWORD()'''   | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Na základe vtupného textu vypočíta heslo. Táto funkcia je použitá na generovanie hesiel v databáze ''mysql'' (tabuľka ''users'').   | |
| − | + | <source lang="sql">  | |
| − | + |   SELECT PASSWORD('kiwiki')  | |
| − | + | </source>   | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ==Zdroje a odkazy==  | + | Výsledok:   | 
| − | + | {| class="wikitable"  | |
| − | + | |-  | |
| + | ! PASSWORD('kiwiki')   | ||
| + | |-  | ||
| + | | *D94D4484B4D4060225F91D28D7BB131F917F760C  | ||
| + | |}  | ||
| + | == Zdroje a odkazy  ==  | ||
| + | <references/>  | ||
Aktuálna revízia z 22:21, 17. január 2011
Databázový systém MySQL obsahuje vstavané funkcie[1], ktoré môžeme rozdeliť do kategórií:
- agregačné,
 - matematické,
 - textové,
 - štatistické,
 - dátumové,
 - šifrovacie a komprimačné.
 
Obsah
Agregačné funkcie
Agregačné funkcie vykonávajú nad stĺpcami tabuľky matematické operácie.
COUNT()
Funkcia COUNT slúži na výpočet počtu záznamov v SQL dotaze.
Úloha: Zisti, koľko je v tabuľke city miest s kódom krajiny SVK (teda na Slovensku)
  SELECT COUNT(*) FROM city WHERE CountryCode = "SVK"
Výsledok:
| COUNT(*) | 
|---|
| 3 | 
MAX() a MIN()
Funkcia MAX(), resp. MIN() slúži na zistenie maximálnej, resp. minimálnej hodnoty z určitej množiny hodnôt.
Úloha: Zisti, ktoré mesto má najväčšiu populáciu. 
Riešenie: Úlohu si rozdelíme na 2 časti:
- Zistenie maximálnej populácie z tabuľky miest
 - Výber mesta s touto populáciou. Pre riešenie tejto úlohy použijeme vnorený príkaz SELECT
 
Podúloha 1:
 SELECT MAX(Population) FROM city
Výsledok: 10500000
Podúloha 2:
 SELECT *  FROM city where Population=
     (SELECT MAX(Population) FROM city)
Výsledok:
| ID | Name | CountryCode | District | Population | 
|---|---|---|---|---|
| 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | 
AVG()
Funkcia AVG() počíta aritmetický priemer množiny hodnôt.
Úloha: Aká je priemerná populácia na Slovensku? 
   SELECT AVG(population) FROM city WHERE CountryCode="SVK"
Výsledok:
| AVG(population) | 
|---|
| 261381.0000 | 
SUM()
Funkcia SUM() počíta súčet hodnôt danej množiny hodnôt.
Úloha: Aký je súčet obyvateľov miest na Slovensku? 
   SELECT SUM(population) FROM city WHERE CountryCode="SVK"
Výsledok:
| SUM(population) | 
|---|
| 784143 | 
STD()
Funkcia STD() počíta štandardnú odchýlku množiny hodnôt.
Úloha: Aká je štandardná odchýlka počtu obyvateľov v mestách Českej republiky? 
   SELECT STD(population) FROM city WHERE CountryCode="CZE"
Výsledok:
| STD(population) | 
|---|
| 321564.4992 | 
Matematické funkcie
ABS(X)
Funkcia ABS vypočíta absolútnu hodnotu z čísla X.
Príklad:
   SELECT ABS(-3)
Výsledok:
| ABS(-3) | 
|---|
| 3 | 
SIN(X) 
Funcia SIN vypočíta sínus uhla X. Uhol X je v radiánoch.
Príklad:
   SELECT SIN(PI()/2)
Výsledok:
| SIN(PI()/2) | 
|---|
| 1 | 
 
COS 
Funcia COS vypočíta kosínus uhla X. Uhol X je v radiánoch.
Príklad:
   SELECT COS(0)
Výsledok:
| COS(0) | 
|---|
| 1 | 
CEIL(X)
Funkcia CEIL zaokrúhli číslo X smerom hore.
Príklad:
  SELECT CEIL(7.55)
Výsledok:
| CEIL(7.55) | 
|---|
| 8 | 
EXP( X )
Táto funkcia vracia hodnotu e (základ prirodzeného logaritmu), umocnenú na mocninu X.
Príklad:
   SELECT EXP(3)
Výsledok:
| EXP(3) | 
|---|
| 20.0855369231877 | 
FLOOR(X) 
Funkcia FLOOR zaokrúhli číslo X smerom dole.
Príklad:
  SELECT FLOOR(7.55)
Výsledok:
| FLOOR(7.55) | 
|---|
| 7 | 
FORMAT(X,N)
Funkcia FORMAT() sa používa na formátovanie čísla X. N je počet desatinných miest čísla X.
Príklad:
   SELECT FORMAT(423423234.65434453,3)
Výsledok:
| FORMAT(423423234.65434453,3) | 
|---|
| 423,423,234.654 | 
LOG(X) 
Funkcia LOG vypočíta prirodzený logaritmus z čísla X (Poznámka: prirodzený logaritmus má základ e).
Príklad:
   SELECT LOG(10)
Výsledok: 
| LOG(10) | 
|---|
| 2.30258509299405 | 
LOG10(X)
Vypočíta desiatkový logaritmus z čísla X.
Príklad:
   SELECT LOG10(100)
Výsledok:
| LOG10(100) | 
|---|
| 2 | 
PI()
Táto funkcia vráti hodnotu Ludolfovho čísla pí.
Príklad:
   SELECT PI()
Výsledok:
| PI() | 
|---|
| 3.141593 | 
POW(X, Y) 
Táto funkcia vracia hodnotu X umocnenú na Y. Je to alias k funkcii POWER.
Príklad:
   SELECT POWER(3,3)
Výsledok:
| POWER(3,3) | 
|---|
| 27 | 
ROUND (X,D)
Táto funkcia vracia X zaokrúhlené na celé číslo. Ak je použitý druhý argument(D) potom funkcia zaokrúhli X na D desatiných miest.
Príklad:
 
   SELECT ROUND(5.693893,2)
Výsledok:
| ROUND(5.693893,2) | 
|---|
| 5.69 | 
SQRT(X) 
Funkcia SQRT vypočíta druhú odmocninu čísla X. Ak je X záporné funkcia SQRT vráti NULL.
Príklad:
   SELECT SQRT(16)
Výsledok:
| SQRT(16) | 
|---|
| 4.000000 | 
TAN(X)
Funkcia TAN - vypočíta tangens uhla X. Uhol X je v radiánoch.
Príklad: Aká je hodnota TAN(45)?
   SELECT TAN(PI()/4)
Výsledok:
| SELECT TAN(PI()/4) | 
|---|
| 1 | 
RAND() 
Funkcia RAND generuje náhodné číslo v intervale (0,1).
Príklad: V príklade budeme generovať 2 náhodné čísla.
   SELECT RAND(),RAND()
Výsledok:
| RAND() | RAND() | 
|---|---|
| 0.516074677478592 | 0.469642581855545 | 
Textové funkcie
CHAR(X,...)
Funkcia CHAR() prevedie každý svoj argument X na znak podľa použitej znakovej tabuľky.
   SELECT CHAR(77,121,83,81,76)
Výsledok:
| CHAR(77,121,83,81,76) | 
|---|
| MySQL | 
CONCAT 
Funkcia CONCAT() sa používa na spojenie dvoch reťazcov do jedného reťazca.
Úloha: V tabuľke city spoj atribúty: name a CountryCode do jedného stĺpca s názvom Mesto
   SELECT concat(name, " - ", countrycode) AS Mesto FROM city
Výsledok:
| Mesto | 
|---|
| Košice - SVK | 
| Prešov - SVK | 
| Kabul - AFG | 
| Qandahar - AFG | 
| Herat - AFG | 
| Mazar-e-Sharif - AFG | 
| Amsterdam - NLD | 
| Rotterdam - NLD | 
FIELD(str, str1, str2, str3, ...) 
Funkcie FIELD vracia index (pozícia začínajúca na hodonte 1) reťazca str v reťazcoch str1, str2, str3, ... . Ak nie je reťazec str nájdený, funkcia vráti 0.
Príklad:
   SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo')
Výsledok:
| FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo') | 
|---|
| 2 | 
LOWER(str)
Funkcia LOWER() konvertuje reťazec str na malé písmená.
Úloha: Konvertuj kód krahiny (code) na malé písmená v tabuľke country.
   SELECT Name,LOWER(code) from country
Výsledok:
| Name | LOWER(code) | 
|---|---|
| Afghanistan | afg | 
| Netherlands | nld | 
| Netherlands Antilles | ant | 
| Albania | alb | 
| Algeria | dza | 
| American Samoa | asm | 
| Andorra | and | 
| Angola | ago | 
UPPER 
Funkcia UPPER() konvertuje reťazec na veľké písmená.
Úloha: konvertuj názov mesta (name) na veľké písmená v tabuľke city.
   SELECT UPPER(name) FROM city
Výsledok:
| upper(name) | 
|---|
| MAZAR-E-SHARIF | 
| AMSTERDAM | 
| HAAG | 
| UTRECHT | 
| EINDHOVEN | 
| TILBURG | 
LTRIM(str)
Zo začiatku reťazca str odstráni nečitateľné znaky (medzery).
Príklad:
   SELECT LTRIM('   ahoj DBS')
Výsledok:
| LTRIM(' ahoj DBS') | 
|---|
| ahoj DBS | 
RTRIM(str) 
Z konca reťazca str odstráni nečitateľné znaky (medzery).
Príklad:
   SELECT RTRIM('ahoj DBS   ')
Výsledok:
| RTRIM('ahoj DBS ') | 
|---|
| ahoj DBS | 
TRIM 
Zo začiatku a konca reťazca str odstráni nečitateľné znaky (medzery).
Príklad:
   SELECT TRIM('   ahoj DBS    ')
Výsledok: 
| TRIM(' ahoj DBS ') | 
|---|
| ahoj DBS | 
Dátumové funkcie
ADDDATE(date,INTERVAL days)
Funkcia ADDDATE pripočíta k zadanému dátumu date zadaný počet dní (hodnota days). Parameter days môžeme zadávať pomocou funkcie INTERVAL, alebo ako celé číslo.
Príklad:
SELECT ADDDATE('2010-12-20',10),
       ADDDATE('2010-12-20', INTERVAL 11 DAY)
Výsledok:
| ADDDATE('2010-12-20',10) | ADDDATE('2010-12-20', INTERVAL 11 DAY) | 
|---|---|
| 2010-12-30 | 2010-12-31 | 
ADDTIME(T1,T2) 
Funica ADDTIME pripočíta k času T1 čas T2. Výsledok je súčet týchto časov.
   SELECT ADDTIME('2010-12-20 10:00:0.0','1 1:1:1.000002')
Výsledok:
| ADDTIME('2010-12-20 10:00:0.0','1 1:1:1.000002') | 
|---|
| 2010-12-21 11:01:01.000002 | 
CURRDATE
Vracia aktuálny dátum ako hodnotu vo formáte 'YYYY-MM-DD' alebo RRRRMMDD, v závislosti na tom, či funkcia je použitá v reťazeci alebo číselnom kontexte.
Príklad:
   SELECT CURDATE()
Výsledok:
| CURDATE() | 
|---|
| 2010-12-15 | 
CURTIME 
Vracia aktuálny čas ako hodnotu v 'HH:MM:SS' alebo HHMMSS formáte, v závislosti na tom, či funkcia je použitá v reťazci alebo číselnom kontexte. Táto hodnota je vyjadrená v aktuálnom časovom pásme.
Príklad:
   SELECT CURTIME()
Výsledok:
| CURTIME() | 
|---|
| 18:31:48 | 
DATEDIFF(D1,D2)
Funkcia DATEDIFF vráti rozdiel v dňoch medzi dátumami D1 a D2.
Príklad:
   SELECT DATEDIFF('2010-12-31 23:59:59','2010-12-20')
Výsledok:
| DATEDIFF('2010-12-31 23:59:59','2010-12-20') | 
|---|
| 11 | 
DATE(D) 
Z dátumu a času D vyberie len dátum.
Príklad:
   SELECT DATE('2010-12-31 01:02:03')
Výsledok:
| DATE('2010-12-31 01:02:03') | 
|---|
| 2010-12-31 | 
DAY 
DAY je synonymom pre DAYOFMONTH.
DAYNAME(D) 
Z dátumu D určí názov dňa.
Príklad:
   SELECT DAYNAME('2010-12-16')
Výsledok:
| DAYNAME('2010-12-16') | 
|---|
| Thursday | 
DAYOFWEEK(D) 
Vráti číslo dňa v týždni (1 = nedeľa, 2 = pondelok, ... , 7 = sobota). Tieto hodnoty indexu zodpovedajú štandardu ODBC[2].
Príklad:
   SELECT DAYOFWEEK('2010-12-31 01:02:03')
Výsledok:
| DAYOFWEEK('2010-12-31 01:02:03') | 
|---|
| 6 | 
DAYOFMONTH(D) 
Z dátumu D vyberie číslo dňa, v rozmedzí 0 - 31.
Príklad:
   SELECT DAYOFMONTH('2010-12-31 01:02:03')
Výsledok:
| DAYOFMONTH('2010-12-31 01:02:03') | 
|---|
| 31 | 
DAYOFYEAR 
Vracia poradové číslo dňa v roku v rozsahu 1 až 366.
Príklad:
   SELECT DAYOFYEAR('2010-12-20')
Výsledok:
| DAYOFYEAR('2010-12-20') | 
|---|
| 354 | 
HOUR(T) 
Funkcia HOUR vyberie z dátumu/času T len hodinu.
Príklad:
   SELECT HOUR('2010-12-20 10:12:58.55')
Výsledok:
| HOUR('2010-12-20 10:12:58.55') | 
|---|
| 10 | 
NOW 
Zistí aktuálny dátum a čas.
Príklad:
   SELECT NOW()
Výsledok:
| NOW() | 
|---|
| 2010-11-03 10:45:55 | 
SYSDATE 
Vráti aktuálnu hodnotu dátumu a času, podľa systémového času.
Príklad:
   SELECT SYSDATE()
Výsledok:
| SYSDATE() | 
|---|
| 2010-12-20 12:21:33 | 
WEEK 
Z dátumu určí číslo týždňa v intervale 1 až 52.
Príklad:
   SELECT WEEK('2010-12-18')
Výsledok:
| WEEK('2010-12-18') | 
|---|
| 50 | 
YEAR(D)
Z dátumu D určí rok.
Príklad:
   SELECT YEAR('2010-12-20')
Výsledok:
| YEAR('2010-12-20') | 
|---|
| 2010 | 
Šifrovacie a komprimačné
Nasledujúce funkcie ponúkajú šifrovanie, dešifrovanie a hašovanie textových dát[3].
AES_ENCRYPT( nezasifrovany_text , kluc ) 
Funkcie AES_ENCRYPT() a AES_DECRYPT() šifrujú a dešifrujú dáta pomocou oficiálneho algoritmu AES(Advanced Encryption Standard). Dĺžka šifrovacieho kľúča je 128 bitov. Dĺžku kľúča sa môže predĺžiť až na 256 bitov.
   INSERT INTO test (text,zasifrovane,heslo) VALUES ("kiwiki",AES_ENCRYPT("kiwiki","123456789"),"1234567789")
Výsledok:
AES_DECRYPT( zasifrovany_text , kluc) 
Táto funkcia dešifruje dáta pomocou šifrovacieho algoritmus AES (Advanced Encryption Standard)
   SELECT text, AES_DECRYPT(zasifrovane,"123456789") AS rozsifrovane ,heslo FROM test
Výsledok:
COMPRESS( str ), UNCOMPRESS( str ) 
Komprimuje/dekomprimuje reťazec a vráti výsledok ako binárny reťazec. Táto funkcia vyžaduje konfiguráciu MySQL servara tak, aby boli zostavený s kompresnou knižnicu zlib. V opačnom prípade je návratová hodnota vždy NULL. Komprimovaný reťazec môže byť dekomprimovaný funkciou UNCOMPRESS().
   INSERT INTO test (text,zasifrovane) VALUES ("kiwiki",COMPRESS("kiwiki"))
Výsledok:
   SELECT id, text, UNCOMPRESS(zasifrovane) AS dekomprimovane FROM test
Výsledok:
ENCODE(str,heslo) 
Šifruje dáta str pomocou nami zadaného šifrovacieho hesla heslo. Výsledok šifrovania je binárny reťazec rovnakej dĺžky ako pôvodný. Na dešifrovanie sa používa funcia DECODE.
Príklad:
 SELECT ENCODE("kiwiki", "heslo")
Výsledok:
DECODE(crypt_str,heslo) 
Funkcia DECODE je opak funkcie ENCODE. Dešifruje zašifrované dáta funkciou ENCODE pomocou vloženého hesla pri šifrovaní[4].
Príklad:
 SELECT DECODE( ENCODE("kiwiki","heslo"), "heslo")
Výsledok:
| DECODE( ENCODE("kiwiki","heslo"), "heslo") | 
|---|
| kiwiki | 
DES_DECRYPT( text, [kluc]), DES_ENCRYPT(text , kluc) 
Funkcie DES_ENCRYPT() a DES_DECRYPT() šifrujú a dešifrujú dáta pomocou oficiálneho algoritmu DES. Použitie je podobné ako pri funkciách AES_DECRYPT a AES_ENCRYPT.
MD5() (Message-Digest algorithm)
Hašovacia funkcia, mení vstupné dáta na výstupné dáta fixnej dĺžky.
Príklad:
 SELECT MD5(password) FROM tabulka
Výsledok:
| MD5(password) | 
|---|
| 21232f297a57a5a743894a0e4a801fc3 | 
SHA1(), SHA() (Secure Hash Algorithm)
Hašovacia funkcia, mení vstupné dáta na výstupné dáta fixnej dĺžky.
Príklad:
 SELECT SHA(password) FROM tabulka
 SELECT SHA1(password) FROM tabulka
Výsledok:
| SHA(password)/SHA1(password) | 
|---|
| d033e22ae348aeb5660fc2140aec35850c4da997 | 
PASSWORD() 
Na základe vtupného textu vypočíta heslo. Táto funkcia je použitá na generovanie hesiel v databáze mysql (tabuľka users).
  SELECT PASSWORD('kiwiki')
Výsledok:
| PASSWORD('kiwiki') | 
|---|
| *D94D4484B4D4060225F91D28D7BB131F917F760C | 
Zdroje a odkazy
- ↑ MySQL Useful Functions and Clauses - http://www.tutorialspoint.com/mysql/mysql-useful-functions.htm
 - ↑ ODBC Scalar Functions - http://msdn.microsoft.com/en-us/library/bb630290.aspx
 - ↑ Encryption and Compression Functions - http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html
 - ↑ Decode Demo 1 - http://www.bhatipoglu.com/entry/41/decode-demo-1
 

