SQL - dátové typy: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 7: Riadok 7:
 
*binárny (BLOB, ...).
 
*binárny (BLOB, ...).
  
Každý databázový server implementuje tieto základné dátové typy .
+
Každý databázový server implementuje tieto základné dátové typy.
 
__TOC__
 
__TOC__
Medzi špeciálne dátové typy, resp. hodnoty  patrí '''NULL'''
+
Medzi špeciálne dátové typy, resp. hodnoty  patrí '''NULL'''.
  
 
;NULL :nie je nula, ani medzera. NULL je špeciálna hodnota - nepriradená, prázdna, resp. žiadna. Ak sa NULL nachádza v arimetickom výraze, výsledok je vždy NULL.  
 
;NULL :nie je nula, ani medzera. NULL je špeciálna hodnota - nepriradená, prázdna, resp. žiadna. Ak sa NULL nachádza v arimetickom výraze, výsledok je vždy NULL.  
Riadok 16: Riadok 16:
 
Databázový server MySQL podporuje celý rad dátových typov v niekoľkých kategóriách: číselné typy, typy pre dátum a čas, reťazcové (znakové) typy. V tejto časti sa nachádza opis týchto dátových typov.  
 
Databázový server MySQL podporuje celý rad dátových typov v niekoľkých kategóriách: číselné typy, typy pre dátum a čas, reťazcové (znakové) typy. V tejto časti sa nachádza opis týchto dátových typov.  
 
Pri opise dátových typov používame nasledujúce konvencie:
 
Pri opise dátových typov používame nasledujúce konvencie:
* ''Veľkosť'' udáva maximálnu šírku pre celočíselné typy. Pre čísla s desatinnou časťou je ''Veľkosť'' je celkový počet číslic, ktoré môžu byť uložené. Pre reťazcové typy je ''Veľkosť'' maximálna dĺžka reťazca. Maximálne prípustné hodnoty ''Veľkosť'' závisia od typu dát.
+
* ''Veľkosť'' udáva maximálnu šírku pre celočíselné typy. Pre čísla s desatinnou časťou je ''Veľkosť'' celkový počet číslic, ktoré môžu byť uložené. Pre reťazcové typy je ''Veľkosť'' maximálna dĺžka reťazca. Maximálne prípustné hodnoty ''Veľkosť'' závisia od typu dát.
 
* ''d'' sa vzťahuje len k čislam s desatinnou časťou a označuje počet číslic za desatinnou čiarkou. Maximálna možná hodnota je 30, ale mala by byť väčšia ako ''Veľkosť-2''.
 
* ''d'' sa vzťahuje len k čislam s desatinnou časťou a označuje počet číslic za desatinnou čiarkou. Maximálna možná hodnota je 30, ale mala by byť väčšia ako ''Veľkosť-2''.
*  Hranaté zátvorky ('<nowiki>[</nowiki>' a '<nowiki>]</nowiki>') hovoria o nepovinných častiach v definíciách dátových typov.
+
*  Hranaté zátvorky '<nowiki>[</nowiki>' a '<nowiki>]</nowiki>' hovoria o nepovinných častiach v definíciách dátových typov.
  
 
==Textové typy==
 
==Textové typy==
Riadok 31: Riadok 31:
 
|-
 
|-
 
|VARCHAR(''veľkosť'')
 
|VARCHAR(''veľkosť'')
|Používa sa na uloženie reťazca premenlivej dĺžky. Táto dĺžka je defonovaná v zátvorke - ''veľkosť''. Maximálny počet znakov ne 255. Pri uvedení väčšej hodnoty ako 255 sa tym zmení na TEXT.
+
|Používa sa na uloženie reťazca premenlivej dĺžky. Táto dĺžka je defonovaná v zátvorke - ''veľkosť''. Maximálny počet znakov ne 255. Pri uvedení väčšej hodnoty ako 255 sa automaticky zmení na TEXT.
 
|-
 
|-
 
|TINYTEXT
 
|TINYTEXT
Riadok 95: Riadok 95:
  
 
==Dátumové typy==
 
==Dátumové typy==
Dátové typy<ref>http://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html</ref> pre dátum sú DATETIME, DATE, TIMESTAMP, TIME a YEAR. Každý typ má množinu hodnôt, ktoré môže nadobúdať. Dátový typ TIMESTAMP je zvláštny dátový typ, ktorého hodnota sa vypočíta pri vkladaní sama.
+
Dátové typy pre dátum<ref>http://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html</ref> sú DATETIME, DATE, TIMESTAMP, TIME a YEAR. Každý typ má množinu hodnôt, ktoré môže nadobúdať. Dátový typ TIMESTAMP je zvláštny dátový typ, ktorého hodnota sa vypočíta pri vkladaní sama.
 
{|class="wikitable"
 
{|class="wikitable"
 
|+ Dátumové dátové typy v MySQL
 
|+ Dátumové dátové typy v MySQL
Riadok 108: Riadok 108:
 
|DATETIME()
 
|DATETIME()
 
|Kombinácia dátumu a času. Formát je nasledujúci: YYYY-MM-DD HH:MM:SS.  
 
|Kombinácia dátumu a času. Formát je nasledujúci: YYYY-MM-DD HH:MM:SS.  
|od 1000-01-01 00:00:00do 9999-12-31 23:59:59
+
|od 1000-01-01 00:00:00 do 9999-12-31 23:59:59
 
|-
 
|-
 
|TIMESTAMP()
 
|TIMESTAMP()

Verzia zo dňa a času 20:38, 14. január 2011

Pri vytváraní databázových tabuliek musíme definovať domény atribútov relácie, čiže dátové typy pre atribúty tabuľky. V databázových systémoch rozlišujeme základné dátové typy[1][2]:

  • celočíselný (INT, ...),
  • reálny (FLOAT, DOUBLE, ...),
  • textový (VARCHAR, CHAR, TEXT, ...),
  • binárny (BLOB, ...).

Každý databázový server implementuje tieto základné dátové typy.

Medzi špeciálne dátové typy, resp. hodnoty patrí NULL.

NULL
nie je nula, ani medzera. NULL je špeciálna hodnota - nepriradená, prázdna, resp. žiadna. Ak sa NULL nachádza v arimetickom výraze, výsledok je vždy NULL.


Databázový server MySQL podporuje celý rad dátových typov v niekoľkých kategóriách: číselné typy, typy pre dátum a čas, reťazcové (znakové) typy. V tejto časti sa nachádza opis týchto dátových typov. Pri opise dátových typov používame nasledujúce konvencie:

  • Veľkosť udáva maximálnu šírku pre celočíselné typy. Pre čísla s desatinnou časťou je Veľkosť celkový počet číslic, ktoré môžu byť uložené. Pre reťazcové typy je Veľkosť maximálna dĺžka reťazca. Maximálne prípustné hodnoty Veľkosť závisia od typu dát.
  • d sa vzťahuje len k čislam s desatinnou časťou a označuje počet číslic za desatinnou čiarkou. Maximálna možná hodnota je 30, ale mala by byť väčšia ako Veľkosť-2.
  • Hranaté zátvorky '[' a ']' hovoria o nepovinných častiach v definíciách dátových typov.

Textové typy

Textové dátové typy[3] sú CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, a SET. V nasledujúcej tabuľke sú tieto typy opísané podrobnejšie. Pri deklarácii textového typu je možnosť definovať maximálnu veľkosť daného typu a tým optimalizovať databázový návrh z hľadiska využia miesta.

Textové dátové typy v MySQL
Dátový typ Opis
CHAR(veľkosť) Používa sa na uloženie reťazca pevnej dĺžky. Pevná dĺžka je defonovaná v zátvorke - veľkosť. Maximálny počet znakov ne 255.
VARCHAR(veľkosť) Používa sa na uloženie reťazca premenlivej dĺžky. Táto dĺžka je defonovaná v zátvorke - veľkosť. Maximálny počet znakov ne 255. Pri uvedení väčšej hodnoty ako 255 sa automaticky zmení na TEXT.
TINYTEXT Reťazec s maximálnou dĺžkou 255 znakov.
TEXT Reťazec s maximálnou dĺžkou 65535 znakov.
BLOB Veľký binárny obejkt (BLOB - Binary Large OBjects). Umožňuje uloženie do 65535 bajtov binárnych dát.
MEDIUMTEXT Reťazec s maximálnou dĺžkou 16 777 215 znakov.
MEDIUMBLOB Veľký binárny obejkt (BLOB - Binary Large OBjects). Umožňuje uloženie do 16 777 215 (16MB) bajtov binárnych dát.
LONGTEXT Dátový typ pre uloženie až 4,294,967,295 znakov.
LONGBLOB Veľký binárny obejkt (BLOB - Binary Large OBjects). Umožňuje uloženie do 4 294 967 295 bajtov (4GB) binárnych dát.
ENUM(x,y,z,atď.) Vymenovaný typ. Je potrebné určiť zoznam povolených hodnôt. Počet týchto hodnôt môže byť maximálne 65535. Ak sa pokúsime vložiť do tabuľky hodnotu, ktorú sme nedefinovali, vloží sa prázdna hodnota NULL.
SET Množina. Podobné dátovému typu ENUM s tým rozdielom, že môžeme zadefinovať maximálne 64 položiek a v tabuľke môžeme uložiť viac ako jednu položku.

Číselné typy

MySQL podporuje všetky štandardné SQL číselné dátové typy[4]. Tieto typy zahŕňajú celočíselné dátové typy (INTEGER, SMALLINT, DECIMAL a NUMERIC), ako číselné dátové typy s desatinnou časťou (FLOAT, REAL, DOUBLE PRECISION). Kľúčové slovo INT je synonymom pre INTEGER, a kľúčové slová DEC a FIXED sú synonymá pre DECIMAL. MySQL používa dátový typ DOUBLE ako synonymum pre DOUBLE PRECISSION (neštandardné rozšírenie).

Číselné dátové typy v MySQL
Dátový typ Opis
TINYINT Celé číslo v intervale od -128 do 127. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 255.
SMALLINT Celé číslo v intervale od -32768 do 32767. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 65535.
MEDIUMINT Celé číslo v intervale od -8388608 do 8388607. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 16777215.
INT Celé číslo v intervale od -2147483648 do 2147483647. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 4294967295.
BIGINT Celé číslo v intervale od -9223372036854775808 do 9223372036854775807. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 18446744073709551615.
FLOAT(Veľkosť,d) Číslo s desatinnou časťou. Maximálny počet cifier, pre zobrazenie čísla udáva parameter Veľkosť. Maximálny počet číslic vpravo od desatinnej čiarky je uvedené v parametri d. Rozsah typu FLOAT: od -3.402E+38 do -1.1751E-38, od 1.175E-38 do 3.402E+38.
DOUBLE(Veľkosť,d) Číslo s desatinnou časťou - s dvojitu presnosťou. Maximálny počet cifier, pre zobrazenie čísla udáva parameter Veľkosť. Maximálny počet číslic vpravo od desatinnej čiarky je uvedené v parametri d. Rozsah typu DOUBLE: od 1.7976E+308 do -2.225E-308; 0; od 2.225E-308 do 1.797E+308.
DECIMAL(Veľkosť,d) Hodnota DOUBLE uložená ako reťazec. Význam parametrov Veľkosť a d je rovnaký ako v predchádzajúcich príkladoch.

Dátumové typy

Dátové typy pre dátum[5] sú DATETIME, DATE, TIMESTAMP, TIME a YEAR. Každý typ má množinu hodnôt, ktoré môže nadobúdať. Dátový typ TIMESTAMP je zvláštny dátový typ, ktorého hodnota sa vypočíta pri vkladaní sama.

Dátumové dátové typy v MySQL
Dátový typ Opis Rozsah
DATE() Dátum. Formát je nasledujúci: YYYY-MM-DD. od 1000-01-01 do 9999-12-31
DATETIME() Kombinácia dátumu a času. Formát je nasledujúci: YYYY-MM-DD HH:MM:SS. od 1000-01-01 00:00:00 do 9999-12-31 23:59:59
TIMESTAMP() Časové razítko. Hodnota dátového typu TIMESTAMP je počet sekúnd od začiatku Unixovej epochy, teda od 1970-01-01 00:00:00 UTC. Format pre dátový typ TIMESTAMP je: YYYY-MM-DD HH:MM:SS. od 1970-01-01 00:00:01 UTC do 2038-01-09 03:14:07 UTC
TIME() Čas. Formát pre typ TIME je: HH:MM:SS. od -838:59:59 do 838:59:59
YEAR[(2|4)] YEAR je dvoj /YEAR(2)/ alebo štvor /YEAR(4)/ ciferná reprezentácia roku. pre 4-ciferný formát: od 1901 do 2155

pre 2-ciferný dormát: do 70 do 69, čo reprezentuje roky od 1970 do 2069

Zdroje a odkazy