SQL - vstavané funkcie: Rozdiel medzi revíziami
Riadok 1: | Riadok 1: | ||
− | {{Skripta_dbs}} | + | {{Skripta_dbs}} {{Draft}} Databázový systém mySQL podporuje obsahuje vstavané funkcie, často nazývané aj agregačné funkcie. Tieto funkcie môžeme rozdeliť do skupín podľa ich zamerania: |
− | {{Draft}} | + | |
− | Databázový systém mySQL podporuje obsahuje vstavané funkcie, často nazývané aj agregačné funkcie. Tieto funkcie môžeme rozdeliť do skupín podľa ich zamerania: | + | *Agregačné |
− | *Agregačné | + | *Matematické |
− | *Matematické | + | *Textové |
− | *Textové | + | *Štatistické |
− | *Štatistické | + | *Dátumové |
− | *Dátumové | ||
*Šifrovacie a komprimačné | *Šifrovacie a komprimačné | ||
− | ==Agregačné funkcie== | + | == 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> | + | </source> |
− | Výsledok: COUNT(*): 3 | + | Výsledok: COUNT(*): 3 |
− | Vylepšená verzia, pre prehľadnejšie čítanie výsledku: | + | Vylepšená verzia, pre prehľadnejšie čítanie výsledku: <source lang="sql"> |
− | <source lang="sql"> | ||
SELECT COUNT(*) AS pocet FROM city WHERE CountryCode = "SVK" | SELECT COUNT(*) AS pocet FROM city WHERE CountryCode = "SVK" | ||
− | </source> | + | </source> |
− | Výsledok: pocet: 3 | + | Výsledok: pocet: 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. | |
− | Riešenie: Úlohu si rozdelíme na 2 časti: | + | <br> '''Úloha:''' Zisti, ktoré mesto má najväčšiu populáciu. |
− | #Zistenie maximálnej populácie z tabuľky miest | + | |
+ | 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 | #Výber mesta s touto populáciou. Pre riešenie tejto úlohy použijeme vnorený príkaz SELECT | ||
− | Podúloha 1: | + | Podúloha 1: <source lang="sql"> |
− | <source lang="sql"> | ||
SELECT MAX(Population) FROM city | SELECT MAX(Population) FROM city | ||
− | </source> | + | </source> Výsledok: 10500000 |
− | Výsledok: | ||
− | Podúloha 2: | + | Podúloha 2: <source lang="sql"> |
− | <source lang="sql"> | ||
SELECT * FROM city where Population= | SELECT * FROM city where Population= | ||
(SELECT MAX(Population) FROM city) | (SELECT MAX(Population) FROM city) | ||
− | </source> | + | </source> Výsledok: |
− | Výsledok: | ||
− | [[ | + | [[Image:Select max.png|center]] |
− | ===AVG()=== | + | === AVG() === |
− | |||
+ | Funkcia AVG() počíta aritmetický priemet množiny hodnôt. | ||
− | '''Úloha:''' Aká je priemerná populácia na Slovensku? | + | <br> '''Úloha:''' Aká je priemerná populácia na Slovensku? |
<source lang="sql"> | <source lang="sql"> | ||
SELECT AVG(population) FROM city where CountryCode="SVK" | SELECT AVG(population) FROM city where CountryCode="SVK" | ||
− | </source> | + | </source> |
+ | |||
+ | Výsledok: AVG(population): 261381.0000 | ||
− | + | === SUM() === | |
− | ===SUM()=== | ||
− | |||
+ | Funkcia SUM() počíta súčet hodnôt danej množiny hodnôt. | ||
− | '''Úloha:''' Aký je súčet obyvateľov miest na Slovensku? | + | <br> '''Úloha:''' Aký je súčet obyvateľov miest na Slovensku? |
<source lang="sql"> | <source lang="sql"> | ||
SELECT SUM(population) FROM city where CountryCode="SVK" | SELECT SUM(population) FROM city where CountryCode="SVK" | ||
− | </source> | + | </source> |
+ | |||
+ | Výsledok: SUM(population): 784143 | ||
− | + | === STD() === | |
− | ===STD()=== | ||
− | |||
+ | Funkcia SUM() počíta štandardnú odchýlku množiny hodnôt. | ||
− | '''Úloha:''' Aká je štandardná odchýlka počtu obyvateľov v mestách Českej republiky? | + | <br> '''Úloha:''' Aká je štandardná odchýlka počtu obyvateľov v mestách Českej republiky? |
<source lang="sql"> | <source lang="sql"> | ||
SELECT STD(population) FROM city where CountryCode="CZE" | SELECT STD(population) FROM city where CountryCode="CZE" | ||
− | </source> | + | </source> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Výsledok: STD(population): 321564.4992 | |
+ | == Matematické funkcie == | ||
− | ''' | + | '''ABS''' |
+ | <br> '''SIN''' | ||
− | ''' | + | <br> '''COS''' |
+ | <br> '''CEIL''' | ||
− | ''' | + | <br> '''EXP''' |
+ | <br> '''FLOOR''' | ||
− | '''FORMAT''' | + | <br> '''FORMAT''' |
+ | <br> '''LOG''' | ||
− | ''' | + | <br> '''LOG10''' |
+ | <br> '''PI''' | ||
− | ''' | + | <br> '''POW''' |
+ | <br> '''ROUND''' | ||
− | ''' | + | <br> '''SQRT''' |
+ | <br> '''TAN''' | ||
− | ''' | + | <br> '''RAND''' |
+ | == Textové funkcie == | ||
− | + | '''CHAR''' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | '''CHAR''' | ||
<source lang="sql"> | <source lang="sql"> | ||
− | </source> | + | </source> |
− | '''CONCAT''' | + | '''CONCAT''' |
<source lang="sql"> | <source lang="sql"> | ||
− | </source> | + | </source> |
− | '''FIELD''' | + | '''FIELD''' |
<source lang="sql"> | <source lang="sql"> | ||
− | </source> | + | </source> |
− | '''LOWER''' | + | '''LOWER''' |
<source lang="sql"> | <source lang="sql"> | ||
− | </source> | + | </source> |
− | '''UPPER''' | + | '''UPPER''' |
<source lang="sql"> | <source lang="sql"> | ||
− | </source> | + | </source> |
− | |||
− | '''LTRIM(''str'')''' | + | <br> '''LTRIM(''str'')''' |
− | Zo začiatku reťazca ''str'' odstráni nečitateľné znaky (medzery). | + | Zo začiatku reťazca ''str'' odstráni nečitateľné znaky (medzery). |
− | Príklad: | + | Príklad: <source lang="sql"> |
− | <source lang="sql"> | ||
SELECT LTRIM(' ahoj DBS') | SELECT LTRIM(' ahoj DBS') | ||
− | </source> | + | </source> |
− | |||
− | |||
− | + | Výsledok: | |
+ | <span style="background-color: yellow;">ahoj DBS</span> | ||
− | '''RTRIM(''str'')''' | + | <br> '''RTRIM(''str'')''' |
− | Z konca reťazca ''str'' odstráni nečitateľné znaky (medzery). | + | Z konca reťazca ''str'' odstráni nečitateľné znaky (medzery). |
− | Príklad: | + | Príklad: <source lang="sql"> |
− | <source lang="sql"> | ||
SELECT RTRIM('ahoj DBS ') | SELECT RTRIM('ahoj DBS ') | ||
− | </source> | + | </source> |
− | |||
− | |||
− | + | Výsledok: | |
+ | <span style="background-color: yellow;">ahoj DBS</span> | ||
− | '''TRIM''' | + | <br> '''TRIM''' |
− | Zo začiatku a konca reťazca ''str'' odstráni nečitateľné znaky (medzery). | + | Zo začiatku a konca reťazca ''str'' odstráni nečitateľné znaky (medzery). |
− | Príklad: | + | Príklad: <source lang="sql"> |
− | <source lang="sql"> | ||
SELECT TRIM(' ahoj DBS ') | SELECT TRIM(' ahoj DBS ') | ||
− | </source> | + | </source> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Výsledok: | ||
− | + | <span style="background-color: yellow;">ahoj DBS</span> | |
+ | == Dátumové funkcie == | ||
− | ''' | + | '''ADDDATE''' |
+ | <br> '''ADDTIME''' | ||
− | ''' | + | <br> '''CURRDATE''' |
+ | <br> '''CURTIME''' | ||
− | ''' | + | <br> '''DATE''' |
+ | Dátum vo formáte RRRR-MM-DD, medzi 1000-01-01 a 9999-12-31. Napríklad, 30. decembra 1973 by sa uloží ako 1973-12-30. | ||
− | ''' | + | SELECT DATE<br> výsledok : 2003-12-31<br><br> '''DAY''' |
+ | <br> '''DAYNAME''' | ||
− | ''' | + | <br> '''DAYOFWEEK''' |
+ | <br> '''DAYOFMONTH''' | ||
− | ''' | + | <br> '''DAYOFYEAR''' |
+ | <br> '''HOUR''' | ||
− | ''' | + | <br> '''NOW''' |
+ | <br> '''SYSDATE''' | ||
− | '''WEEK''' | + | <br> '''WEEK''' |
+ | <br> '''YEAR''' | ||
− | + | == Šifrovacie a komprimačné == | |
− | + | '''AES_ENCRYPT( ''nezasifrovany_text , kluc'' )''' | |
− | '''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), ktorý bol predtým známy ako "Rijndael." Dĺžka šifrovacieho kľúča je 128 bitov. Dĺžku kľúča sa môže predĺžiť až na 256 bitov. Vybrali sme si 128 kúskov, pretože to je oveľa rýchlejšie a je dostatočne zabezpečený pre väčšinu účelov. | + | 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), ktorý bol predtým známy ako "Rijndael." Dĺžka šifrovacieho kľúča je 128 bitov. Dĺžku kľúča sa môže predĺžiť až na 256 bitov. Vybrali sme si 128 kúskov, pretože to je oveľa rýchlejšie a je dostatočne zabezpečený pre väčšinu účelov. |
<source lang="sql"> | <source lang="sql"> | ||
insert into test (text,zasifrovane,heslo) values ("kiwiki",AES_ENCRYPT("kiwiki","123456789"),"1234567789") | insert into test (text,zasifrovane,heslo) values ("kiwiki",AES_ENCRYPT("kiwiki","123456789"),"1234567789") | ||
− | </source> | + | </source> Výsledok: [[Image:Sql AES ENCRYPT.png|frame|center]] |
− | Výsledok: | ||
− | [[ | ||
− | '''AES_DECRYPT( ''zasifrovany_text , kluc'')''' | + | '''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) | + | 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"> |
− | <source lang="sql"> | ||
SELECT text, AES_DECRYPT(zasifrovane,"123456789") as rozsifrovane ,heslo from test | SELECT text, AES_DECRYPT(zasifrovane,"123456789") as rozsifrovane ,heslo from test | ||
− | </source> | + | </source> |
− | Výsledok: | + | Výsledok: [[Image:Sql AES DECRYPT.png|frame|center]] |
− | [[ | ||
− | '''COMPRESS( ''str'' ), UNCOMPRESS( ''str'' )''' | + | '''COMPRESS( ''str'' ), UNCOMPRESS( ''str'' )''' |
− | Komprimuje/dekomprimuje reťazec a vráti výsledok ako binárny reťazec. Táto funkcia vyžaduje konfigur8ciu MySQL servara tak, aby boli zostavený s kompresnou knižnicu ako zlib. V opačnom prípade je návratová hodnota vždy NULL. Komprimovaný reťazec môže byť nekomprimované s UNCOMPRESS(). | + | Komprimuje/dekomprimuje reťazec a vráti výsledok ako binárny reťazec. Táto funkcia vyžaduje konfigur8ciu MySQL servara tak, aby boli zostavený s kompresnou knižnicu ako zlib. V opačnom prípade je návratová hodnota vždy NULL. Komprimovaný reťazec môže byť nekomprimované s UNCOMPRESS(). |
<source lang="sql"> | <source lang="sql"> | ||
INSERT INTO test (text,zasifrovane) VALUES ("kiwiki",COMPRESS("kiwiki")) | INSERT INTO test (text,zasifrovane) VALUES ("kiwiki",COMPRESS("kiwiki")) | ||
− | </source> | + | </source> Výsledok: [[Image:Sql compress.png|frame|center]] |
− | Výsledok: | ||
− | [[ | ||
− | |||
− | <source lang="sql"> | + | <br> <source lang="sql"> |
SELECT id, text, UNCOMPRESS(zasifrovane) AS dekomprimovane FROM test | SELECT id, text, UNCOMPRESS(zasifrovane) AS dekomprimovane FROM test | ||
− | </source> | + | </source> Výsledok: [[Image:Sql uncompress.png|frame|center]] |
− | Výsledok: | ||
− | [[ | ||
+ | <br> '''ENCODE()''' | ||
− | ''' | + | <br> '''DECODE()''' |
+ | <br> '''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_decript a aes_encrypt. | |
+ | <br> | ||
− | ''' | + | '''MD5()''' |
− | + | <br> '''SHA1(), SHA()''' | |
+ | <br> '''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> | ||
− | + | Výsledok: | |
+ | *D94D4484B4D4060225F91D28D7BB131F917F760C | ||
− | + | == Zdroje a odkazy == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | *http://www.tutorialspoint.com/mysql/mysql-useful-functions.htm | |
− | * http://www.tutorialspoint.com/mysql/mysql-useful-functions.htm | + | *http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html |
− | * http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html |
Verzia zo dňa a času 12:45, 27. október 2010
Databázový systém mySQL podporuje obsahuje vstavané funkcie, často nazývané aj agregačné funkcie. Tieto funkcie môžeme rozdeliť do skupín podľa ich zamerania:
- 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
Vylepšená verzia, pre prehľadnejšie čítanie výsledku:
SELECT COUNT(*) AS pocet FROM city WHERE CountryCode = "SVK"
Výsledok: pocet: 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:
AVG()
Funkcia AVG() počíta aritmetický priemet 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 SUM() 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
SIN
COS
CEIL
EXP
FLOOR
FORMAT
LOG
LOG10
PI
POW
ROUND
SQRT
TAN
RAND
Textové funkcie
CHAR
CONCAT
FIELD
LOWER
UPPER
LTRIM(str)
Zo začiatku reťazca str odstráni nečitateľné znaky (medzery).
Príklad:
SELECT LTRIM(' ahoj DBS')
Výsledok:
ahoj DBS
RTRIM(str)
Z konca reťazca str odstráni nečitateľné znaky (medzery).
Príklad:
SELECT RTRIM('ahoj DBS ')
Výsledok:
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:
ahoj DBS
Dátumové funkcie
ADDDATE
ADDTIME
CURRDATE
CURTIME
DATE
Dátum vo formáte RRRR-MM-DD, medzi 1000-01-01 a 9999-12-31. Napríklad, 30. decembra 1973 by sa uloží ako 1973-12-30.
SELECT DATE
výsledok : 2003-12-31
DAY
DAYNAME
DAYOFWEEK
DAYOFMONTH
DAYOFYEAR
HOUR
NOW
SYSDATE
WEEK
YEAR
Šifrovacie a komprimačné
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), ktorý bol predtým známy ako "Rijndael." Dĺžka šifrovacieho kľúča je 128 bitov. Dĺžku kľúča sa môže predĺžiť až na 256 bitov. Vybrali sme si 128 kúskov, pretože to je oveľa rýchlejšie a je dostatočne zabezpečený pre väčšinu účelov.
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 konfigur8ciu MySQL servara tak, aby boli zostavený s kompresnou knižnicu ako zlib. V opačnom prípade je návratová hodnota vždy NULL. Komprimovaný reťazec môže byť nekomprimované s UNCOMPRESS().
INSERT INTO test (text,zasifrovane) VALUES ("kiwiki",COMPRESS("kiwiki"))
Výsledok:
SELECT id, text, UNCOMPRESS(zasifrovane) AS dekomprimovane FROM test
Výsledok:
ENCODE()
DECODE()
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_decript a aes_encrypt.
MD5()
SHA1(), SHA()
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:
*D94D4484B4D4060225F91D28D7BB131F917F760C