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 23: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