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

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 2: Riadok 2:
 
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<ref>http://www.w3schools.com/SQL/sql_datatypes.asp</ref><ref>http://dev.mysql.com/doc/refman/5.5/en/data-types.html</ref>:  
 
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<ref>http://www.w3schools.com/SQL/sql_datatypes.asp</ref><ref>http://dev.mysql.com/doc/refman/5.5/en/data-types.html</ref>:  
  
*celočíselný (INT, ...)  
+
*celočíselný (INT, ...),
*reálny (FLOAT, DOUBLE, ...)  
+
*reálny (FLOAT, DOUBLE, ...),
*textový (VARCHAR, CHAR, TEXT, ...)  
+
*textový (VARCHAR, CHAR, TEXT, ...),
*binárny (BLOB, ...)
+
*binárny (BLOB, ...).
  
Každý databázový server implementuje tieto 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'''
Riadok 13: Riadok 13:
 
;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.  
  
== MySQL ==
+
 
MySQL podporuje celý rad dátových typov v niekoľkých kategóriách: číselné typy, typy pre dátum a čas, reťazecové (znakové) typy. V tejto časti je týchtodá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:
* ''Size'' udáva maximálnu šírku pre celočíselné typy. Prečísla s desatinnou časťou je ''Size'' je celkový počet číslic, ktoré môžu byť uložené. Pre reťazcové typy je ''Size'' maximálna dĺžka reťazca. Maximálne prípustné hodnoty ''Size'' 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ť'' 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.
* ''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 ''Size-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==
 
Textové dátové typy<ref>http://dev.mysql.com/doc/refman/5.5/en/string-types.html</ref> 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<ref>http://dev.mysql.com/doc/refman/5.5/en/string-types.html</ref> 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.
 
{|class="wikitable"
 
{|class="wikitable"
Riadok 43: Riadok 43:
 
|-
 
|-
 
|MEDIUMTEXT
 
|MEDIUMTEXT
|Reťazec s maximálnou dĺžkou 16 777 215 znakov
+
|Reťazec s maximálnou dĺžkou 16 777 215 znakov.
 
|-
 
|-
 
|MEDIUMBLOB
 
|MEDIUMBLOB
Riadok 49: Riadok 49:
 
|-
 
|-
 
|LONGTEXT
 
|LONGTEXT
|Holds a string with a maximum length of 4,294,967,295 characters
+
|Dátový typ pre uloženie až 4,294,967,295 znakov.
 
|-
 
|-
 
|LONGBLOB
 
|LONGBLOB
Riadok 55: Riadok 55:
 
|-
 
|-
 
|ENUM(''x,y,z,atď.'')
 
|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.
+
|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
 
|SET
|Množina. Podobné dátovému typu ENUM s tým rozdielom, že môžeme zadefinovať maximálne 64 položiek a môžeme uložiť viac ako jednu položku.
+
|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===
+
==Číselné typy==
MySQL podporuje všetky štandardné SQL číselné dátové typy<ref>http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html</ref>. Tieto typy zahŕňajú presné čí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).  
+
MySQL podporuje všetky štandardné SQL číselné dátové typy<ref>http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html</ref>. 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).  
  
 
{|class="wikitable"
 
{|class="wikitable"
Riadok 73: Riadok 73:
 
|-
 
|-
 
|SMALLINT
 
|SMALLINT
|Celé číslo v intervale od -32768 do 32767. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 65535 UNSIGNED
+
|Celé číslo v intervale od -32768 do 32767. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 65535.
 
|-
 
|-
 
|MEDIUMINT
 
|MEDIUMINT
|Celé číslo v intervale od -8388608 to 8388607 normal. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 16777215 UNSIGNED
+
|Celé číslo v intervale od -8388608 do 8388607. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 16777215.
 
|-
 
|-
 
|INT
 
|INT
|Celé číslo v intervale od -2147483648 do 2147483647. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 4294967295 UNSIGNED
+
|Celé číslo v intervale od -2147483648 do 2147483647. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 4294967295.
 
|-
 
|-
 
|BIGINT
 
|BIGINT
|Celé číslo v intervale od -9223372036854775808 do 9223372036854775807. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 18446744073709551615 UNSIGNED
+
|Celé číslo v intervale od -9223372036854775808 do 9223372036854775807. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 18446744073709551615.
 
|-
 
|-
|FLOAT(''size,d'')
+
|FLOAT(''Veľkosť,d'')
|Číslo s desatinnou časťou. Maximálny počet cifier, pre zobrazenie čísla udáva parameter ''size''. Maximálny počet číslic vpravo od desatinnej čiarky je uvedené v parametri d. Rozsah typu FLAOT: od -3.402E+38 do -1.1751E-38,  od 1.175E-38 do 3.402E+38.
+
|Čí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(''size,d'')
+
|DOUBLE(''Veľkosť,d'')
|Číslo s desatinnou časťou - s dvojitu presnosťou. Maximálny počet cifier, pre zobrazenie čísla udáva parameter ''size''. 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.
+
|Čí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(''size,d'')
+
|DECIMAL(''Veľkosť,d'')
|Hodnota DOUBLE uložená ako reťazec. Význam parametrov ''size'' a ''d'' je rovnaký ako v predchádzajúcich príkladoch.
+
|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á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á časový množinu hodnôt, ktoré môže nadobúdať.Dátový typ TIMESTAMP je zvláštny dátový typ, ktorého hodnota sa počíta pri vkladaní sama.
+
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.
 
{|class="wikitable"
 
{|class="wikitable"
 
|+ Dátumové dátové typy v MySQL
 
|+ Dátumové dátové typy v MySQL
Riadok 123: Riadok 123:
 
pre 2-ciferný dormát: do 70 do 69, čo reprezentuje roky od 1970 do 2069
 
pre 2-ciferný dormát: do 70 do 69, čo reprezentuje roky od 1970 do 2069
 
|}
 
|}
 
 
== MS ACCESS ==
 
V aplik8cii MS access existujú nasledovné dátové typy<ref>http://office.microsoft.com/cs-cz/access-help/datove-typy-poli-v-aplikaci-microsoft-access-mdb-HP005238518.aspx</ref>:
 
{| class="wikitable"
 
|-
 
! colspan="2" | Dátový typ
 
! rowspan="2" | Opis
 
! rowspan="2" | Potrebné miesto
 
|-
 
! Slovensky
 
! Anglicky
 
|-
 
| Text
 
| '''Text'''
 
| Používa sa pre uloženie alfa-numerických znakov s maximálnou dĺžkou 255 znakov.
 
|
 
|-
 
| Memo
 
| '''Memo'''
 
| Používa sa pre uloženie väčšieho množstva textu. Môžme tu uložiť až 65536 znakov.
 
|
 
|-
 
| Bajt
 
| '''Byte'''
 
| Povoľuje uložiť číslo od 0 do 255
 
| 1 bajt
 
|-
 
| Číslo
 
| '''Integer'''
 
| Povoľuje uložiť číslo v rozmedzí od -32768 do 32767
 
| 2 bajty
 
|-
 
| Číslo
 
| '''Long'''
 
| Povoľuje uložiť číslo v rozmedzí od -2 147 483 648 do 2 147 483 647
 
| 4 bajty
 
|-
 
| Reálne číslo
 
| '''Single'''
 
| Reálne číslo
 
| 4 bajty
 
|-
 
| Reálne číslo
 
| '''Double'''
 
| Reálne číslo s dvojitou presnosťou.
 
| 8 bajty
 
|-
 
| Mena
 
| '''Currency'''
 
| Určené pre ukladanie údajov finančného charakteru. Dovoľuje uložiť číslo s maximálne 15-timi ciframi v celej časti a 4 desatinné miesta. Pri defonované tohoto dátového typu je možné zvoliť menu.
 
| 8 bajtov
 
|-
 
| Automatické číslo
 
| '''AutoNumber'''
 
| Hodnota tohto dátového typu sa automaticky zvyšuje pri vložení nového záznamu.
 
| 4 bajty
 
|-
 
| Dátum/čas
 
| '''Date/Time'''
 
| Používa sa pre uloženie dátumu a času
 
| 8 bajtov
 
|-
 
| Áno/Nie
 
| '''Yes/No'''
 
| Logická hodnota môže byť zobrazená ako Áno/Nie, Pravda/Nepravda, resp. true/false. Poznámka: hodnota NULL nie je povolená.
 
| 1 bit
 
|-
 
| Objekt OLE
 
| '''OLE Object'''
 
| OLE objekt môže obsahovať multiediálne dáta ako napríklad grafiku, zvuky, video, alebo iné binárne dáta (BLOB - Binary Large OBjects)
 
| do 1GB
 
|-
 
| Hypertextový odkaz
 
| '''Hyperlink'''
 
| Obsahuje odkazy na ostatné polia alebo internetové odkazy
 
|
 
|-
 
| Sprievodca vyhľadávaním
 
| '''Lookup Wizard'''
 
| Sprievodca slúži k vytváraniu polí, ktoré umožňujú vybrať hodnotu z inej tabuľky alebo zo zoznamu hodnôt pomocou poľa so zoznamom.
 
| 4 bajty
 
|}
 
 
  
 
== Zdroje a odkazy==
 
== Zdroje a odkazy==
 
<references/>
 
<references/>

Verzia zo dňa a času 19:34, 10. 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ť 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.
  • 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 tym 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[5] 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á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:00do 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