SQL - dátové typy: Rozdiel medzi revíziami
(3 medziľahlé úpravy od rovnakého používateľa nie sú zobrazené.) | |||
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'''. |
− | ;NULL :nie je nula, ani medzera. NULL je špeciálna hodnota - nepriradená, prázdna, resp. žiadna. Ak sa NULL nachádza v | + | ;NULL :nie je nula, ani medzera. NULL je špeciálna hodnota - nepriradená, prázdna, resp. žiadna. Ak sa NULL nachádza v aritmetickom výraze, výsledok je vždy NULL. |
− | + | ||
− | MySQL podporuje celý rad dátových typov v niekoľkých kategóriách: číselné typy, typy pre dátum a čas, | + | 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ť'' 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 | + | * Hranaté zátvorky '<nowiki>[</nowiki>' a '<nowiki>]</nowiki>' hovoria o nepovinných častiach v definíciách dátových typov. |
− | + | ==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 28: | Riadok 28: | ||
|- | |- | ||
|CHAR(''veľkosť'') | |CHAR(''veľkosť'') | ||
− | |Používa sa na uloženie reťazca pevnej dĺžky. Pevná dĺžka je | + | |Používa sa na uloženie reťazca pevnej dĺžky. Pevná dĺžka je definovaná v zátvorke - ''veľkosť''. Maximálny počet znakov je 255. |
|- | |- | ||
|VARCHAR(''veľkosť'') | |VARCHAR(''veľkosť'') | ||
− | |Používa sa na uloženie reťazca premenlivej dĺžky. Táto dĺžka je | + | |Používa sa na uloženie reťazca premenlivej dĺžky. Táto dĺžka je definovaná v zátvorke - ''veľkosť''. Maximálny počet znakov je 255. Pri uvedení väčšej hodnoty ako 255 sa automaticky zmení na dátový typ TEXT. |
|- | |- | ||
|TINYTEXT | |TINYTEXT | ||
Riadok 40: | Riadok 40: | ||
|- | |- | ||
|BLOB | |BLOB | ||
− | |Veľký binárny | + | |Veľký binárny objekt (BLOB - Binary Large OBjects). Umožňuje uloženie do 65535 bajtov binárnych dát. |
|- | |- | ||
|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 | ||
− | | | + | |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== | |
− | 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ú | + | 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 68: | Riadok 68: | ||
!Dátový typ | !Dátový typ | ||
!Opis | !Opis | ||
− | |||
|- | |- | ||
|TINYINT | |TINYINT | ||
|Celé číslo v intervale od -128 do 127. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 255. | |Celé číslo v intervale od -128 do 127. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 255. | ||
− | |||
|- | |- | ||
|SMALLINT | |SMALLINT | ||
− | |Celé číslo v intervale od -32768 do 32767. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 65535 | + | |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 | + | |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 | + | |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 | + | |Celé číslo v intervale od -9223372036854775808 do 9223372036854775807. Pri doplnení špecifikátora UNSIGNED je rozsah od 0 do 18446744073709551615. |
− | |||
|- | |- | ||
− | |FLOAT('' | + | |FLOAT(''Veľkosť,d'') |
− | |Číslo s desatinnou časťou. Maximálny počet cifier, pre zobrazenie čísla udáva parameter '' | + | |Čí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. |
− | |||
− | od 1.175E-38 do 3.402E+38. | ||
|- | |- | ||
− | |DOUBLE('' | + | |DOUBLE(''Veľkosť,d'') |
− | |Číslo s desatinnou časťou - s | + | |Číslo s desatinnou časťou - s dvojitou 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. |
− | |||
− | od 2.225E-308 do 1.797E+308. | ||
|- | |- | ||
− | |DECIMAL('' | + | |DECIMAL(''Veľkosť,d'') |
− | |Hodnota DOUBLE uložená ako reťazec. Význam parametrov '' | + | |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<ref>http://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html</ref> | + | 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 119: | 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: | + | |od 1000-01-01 00:00:00 do 9999-12-31 23:59:59 |
|- | |- | ||
|TIMESTAMP() | |TIMESTAMP() | ||
Riadok 132: | Riadok 121: | ||
|YEAR je dvoj /YEAR(2)/ alebo štvor /YEAR(4)/ ciferná reprezentácia roku. | |YEAR je dvoj /YEAR(2)/ alebo štvor /YEAR(4)/ ciferná reprezentácia roku. | ||
|pre 4-ciferný formát: od 1901 do 2155 | |pre 4-ciferný formát: od 1901 do 2155 | ||
− | pre 2-ciferný | + | pre 2-ciferný formát: do 70 do 69, čo reprezentuje roky od 1970 do 2069 |
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Zdroje a odkazy== | == Zdroje a odkazy== | ||
<references/> | <references/> |
Aktuálna revízia z 19:20, 17. 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 aritmetickom 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.
Dátový typ | Opis |
---|---|
CHAR(veľkosť) | Používa sa na uloženie reťazca pevnej dĺžky. Pevná dĺžka je definovaná v zátvorke - veľkosť. Maximálny počet znakov je 255. |
VARCHAR(veľkosť) | Používa sa na uloženie reťazca premenlivej dĺžky. Táto dĺžka je definovaná v zátvorke - veľkosť. Maximálny počet znakov je 255. Pri uvedení väčšej hodnoty ako 255 sa automaticky zmení na dátový typ 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 objekt (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).
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 dvojitou 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á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ý formát: do 70 do 69, čo reprezentuje roky od 1970 do 2069 |