SQL - vstavané funkcie: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 258: Riadok 258:
  
 
<br> '''ENCODE()'''  
 
<br> '''ENCODE()'''  
 +
 +
Pretvára vstupné dáta na výstupné s nami zadaným výrazom.
 +
  <source lang="sql">
 +
  SELECT encode(pass, 'vyraz') FROM tabulka
 +
  </source>
  
 
<br> '''DECODE()'''  
 
<br> '''DECODE()'''  
 +
 +
Porovná vstupné hodnoty "luck_number" a vypíše nami zadané hodnoty v stĺpci "kolkate", pokiaľ vstupná hodnota neni zadaná vypíše "nezadane cislo".
 +
 +
Tabulka, dáta, príklad DECODE:
 +
<source lang="sql">
 +
CREATE TABLE tab_decode (
 +
  id int(11) NOT NULL AUTO_INCREMENT,
 +
  name varchar(50) DEFAULT NULL,
 +
  numb varchar(50) DEFAULT NULL,
 +
  pass varchar(150) DEFAULT NULL,
 +
  luck_number int(25) DEFAULT NULL,
 +
  obsah text,
 +
  PRIMARY KEY (id)
 +
);
 +
 +
INSERT INTO `tab_decode` (`id`, `name`, `numb`, `pass`, `luck_number`, `obsah`) VALUES
 +
(1, 'Igor', '0911215603', '123456789', 13, 'text textu textttt 1'),
 +
(2, 'Igor2', '0911215604', '1234567891', 14, 'text textu textttt 2'),
 +
(3, 'Igor3', '0911215605', '1234567892', 15, 'text textu textttt 3'),
 +
(4, 'Igor4', '0911215606', '1234567893', 16, 'text textu textttt 4');
 +
 +
SELECT id, name,
 +
decode(luck_number,
 +
      13, '13te cislo',
 +
      14, '14te cislo',
 +
      15, '15te cislo',
 +
          'nezadane cislo') kolkate,
 +
      obsah
 +
FROM tab_decode;
 +
 +
</source>
  
 
<br> '''DES_DECRYPT( ''text, [kluc]''), DES_ENCRYPT(''text , kluc'')'''  
 
<br> '''DES_DECRYPT( ''text, [kluc]''), DES_ENCRYPT(''text , kluc'')'''  
Riadok 265: Riadok 301:
 
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.  
 
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>  
+
<br> '''MD5()'''
  
'''MD5()'''
+
Hašovacia funkcia, mení vstupné dáta na výstupné dáta fixnej dĺžky.
 +
  <source lang="sql">
 +
  SELECT md5(password) FROM tabulka;
 +
  </source>
  
 
<br> '''SHA1(), SHA()'''  
 
<br> '''SHA1(), SHA()'''  
 +
 +
Hašovacia funkcia, mení vstupné dáta na výstupné dáta fixnej dĺžky.
 +
  <source lang="sql">
 +
  SELECT sha(password) FROM tabulka;
 +
  SELECT sha1(password) FROM tabulka;
 +
  </source>
  
 
<br> '''PASSWORD()'''  
 
<br> '''PASSWORD()'''  

Verzia zo dňa a času 15:04, 27. október 2010

Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.

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é

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:

  1. Zistenie maximálnej populácie z tabuľky miest
  2. 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.

Príklad:

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:

Sql AES ENCRYPT.png

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:

Sql AES DECRYPT.png

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:

Sql compress.png


   SELECT id, text, UNCOMPRESS(zasifrovane) AS dekomprimovane FROM test

Výsledok:

Sql uncompress.png


ENCODE()

Pretvára vstupné dáta na výstupné s nami zadaným výrazom.

   SELECT encode(pass, 'vyraz') FROM tabulka


DECODE()

Porovná vstupné hodnoty "luck_number" a vypíše nami zadané hodnoty v stĺpci "kolkate", pokiaľ vstupná hodnota neni zadaná vypíše "nezadane cislo".

Tabulka, dáta, príklad DECODE:

CREATE TABLE tab_decode (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(50) DEFAULT NULL,
  numb varchar(50) DEFAULT NULL,
  pass varchar(150) DEFAULT NULL,
  luck_number int(25) DEFAULT NULL,
  obsah text,
  PRIMARY KEY (id)
);

INSERT INTO `tab_decode` (`id`, `name`, `numb`, `pass`, `luck_number`, `obsah`) VALUES
(1, 'Igor', '0911215603', '123456789', 13, 'text textu textttt 1'),
(2, 'Igor2', '0911215604', '1234567891', 14, 'text textu textttt 2'),
(3, 'Igor3', '0911215605', '1234567892', 15, 'text textu textttt 3'),
(4, 'Igor4', '0911215606', '1234567893', 16, 'text textu textttt 4');

SELECT id, name, 
decode(luck_number, 
       13, '13te cislo',
       14, '14te cislo',
       15, '15te cislo',
           'nezadane cislo') kolkate,
       obsah
FROM tab_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()

Hašovacia funkcia, mení vstupné dáta na výstupné dáta fixnej dĺžky.

   SELECT md5(password) FROM tabulka;


SHA1(), SHA()

Hašovacia funkcia, mení vstupné dáta na výstupné dáta fixnej dĺžky.

   SELECT sha(password) FROM tabulka;
   SELECT sha1(password) FROM tabulka;


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

Zdroje a odkazy