Začínáme s MySQL – datové typy, dokončení

V dnešním díle dokončím výčet datových typů, které jsou k dispozici v MySQL. Po datových typech uchovávajících čísla a text jsou nyní na řadě typy uchovávající datum, čas a výčtové typy.
Datum a čas

Podobně jako jsou v MySQL typy pro ukládání číselných nebo textových dat, podobně hojně jsou zastoupeny i typy, které slouží k ukládání dat představujících datum nebo čas. Jejich kompletní seznam naleznete v následující tabulce:

Název datového typu Formát
DATETIME YYYY-MM-DD HH:MM:SS
DATE YYYY-MM-DD
TIMESTAMP proměnný
TIME HH:MM:SS
YEAR YYYY

Nyní krátce k vysvětlení jednotlivých typů:

Typ DATETIME slouží k uchování celé hodnoty o čase. Do daného typu se uloží datum včetně času s přesností na sekundu. Rozsah povolených hodnot je od 1000-01-01 00:00:00 až po 9999-12-31.

Trochu podobný je typ DATE, který uchovává informaci o datumu, ale na rozdíl od DATETIME již neuchovává informaci o čase. Mezní hodnoty jsou mezi 1000-01-01a

9999-12-31. K uchování samotné informace o čase slouží typ TIME, jehož mezní hodnoty jsou mezi -838:59:59 a 838:59:59. Oba zmíněný typy umožňují, aby se jako oddělovač jednotlivých částí záznamu použil prakticky kterýkoliv oddělovač (nebo žádný). Záznam zadaný jako 20:24:32, 20.24.32, 20-24-32 či 202432 vyjadřuje stejnou hodnotu – jen si ale vždycky dejte pozor, abyste vždy zadali platný interval. Hodnota, kterou zadáte mimo interval, nebude vynulována, jak by se předpokládalo, ale bude usměrněna do maximálních hodnot.

Posledním typem je typ YEAR. Tento typ slouží k uchování informace o kalendářním roce. Mezní hodnoty se zde pohybují mezi roky 1901 až 2155. U tohoto typu můžete využít několik způsobů zadání. První možnost je zadání formou čtyřmístného čísla (nebo textu). Jedná se tedy například o 1984, 1999, 2001... atd. MySQL však kromě toho umožňuje i ukládání ve dvoumístném formátu. Textové hodnoty v rozmezí 00-69 a 70-99 jsou automaticky konvertovány do formátu 2000-2069 respektive 1970-1999. U číselných hodnot je to podobné jen s tím rozdílem, že dvoumístné hodnoty jsou zadávány ve tvaru 1-69 či 70-99. Veškeré špatně zadané hodnoty budou automaticky ukládány jako 0000.

Pokud se vám nyní zdá, že jsem vynechal typ TIMESTAMP, máte tak trochu pravdu. Tento typ se totiž od předešlých typů podstatně liší, protože na rozdíl od nich uchovává hodnotu poslední aktualizace záznamu (v intervalu 1970-2037 s přesností na sekundu). Tento typ má několik formátů:

Formát datového typu Formát zobrazení
TIMESTAMP (14) YYYYMMDDHHMMSS
TIMESTAMP (12) YYYYDDHHMMSS
TIMESTAMP (10) YYMMDDHHMM
TIMESTAMP (8) YYYYMMDD
TIMESTAMP (6) YYMMDD
TIMESTAMP (4) YYMM
TIMESTAMP (2) YY

Například aktuální datum a čas (den psaní článku) tj. 15. září 2001 14:23,54 bude ve formátu TIMESTAMP (14) uložen jako 20010915142354.

Ostatní datové typy

Kromě číselných nebo textových typů jsou v MySQL k dispozici ještě dva specifické typy, o kterých bych se rád zmínil – ENUM a SET. Typ ENUM je výčtový typ. To znamená, že do daného pole se smí dosadit pouze jedna z hodnot ze seznamu. Jako příklad uvedu třeba následující pole:

Pohlavi ENUM (“Muz“,“Zena“)

Z předchozího příkladu je patrné, že do pole Pohlavi nebudete moci uložit jinou hodnotu, než je v seznamu uvedena (tj. Muž či Žena).

Posledním datovým typem, o kterém bych se dnes rád zmínil, je SET. Tento typ má s typem ENUM mnoho společného. Liší se pouze v tom, že do jednoho pole lze uložit více hodnot ze seznamu (na rozdíl od ENUM) – maximálně 64. Jinak co se týče syntaxe, je obdobná jako u typu ENUM.

(Upozornění: Do polí s typem SET neukládejte čárky!)

Jednou věcí, kterou mají tyto typy společnou, je systém ukládání. Oba se totiž do tabulky ukládají ve formě čísel.

Atributy

Jak jsem již řekl v minulém díle, atributy slouží k tomu, aby upravovaly vlastnosti polí v tabulce. V následující tabulce najdete jejich seznam.

Název atributu Možnost použití
AUTO_INCREMENT U všech typů INT
BINARY CHAR, VARCHAR
DEFAULT U všech typů kromě BLOB a TEXT
NOT NULL U všech typů
NULL U všech typů
PRIMARY KEY U všech typů
UNIQUE U všech typů
UNSIGNED U číselných typů
ZEROFILL U číselných typů

AUTO_INCREMENT: Typ je, jak jsem již uvedl, vázán na celočíselné typy. Tento typ automaticky zajišťuje, že při zadání nového záznamu do tabulky se do pole, kde je uveden, automaticky vloží číslo o jedno vyšší, než bylo dosud použito. Do pole lze rovněž ukládat hodnoty NULL (0) nebo jakékoliv číslo, které je vyšší než nejvyšší použité číslo.

BINARY: Tento atribut zajišťuje, že se řetězce budou ukládat jako binární řetězce. To má výhodu zejména tehdy, když chceme, aby při výběrových dotazech byl brán ohled na velikost písmen.

DEFAULT: Pomocí tohoto atributu umožníte, aby se při nezadání záznamu do pole automaticky uložila jakási “standardní“ hodnota. Řečeno jinak: Když se do tabulky přidá nový záznam a do pole s informací např. o rodinném stavu zákazníka zákazník informaci nevyplní, pak můžeme toto pole zaplnit předdefinovanou hodnotou. Vypadá to například takto:

CREATE TABLE Zakaznik (Stav char (15) NOT NULL DEFAULT “svobodny“)

(Poznámka: Pokud teď nerozumíte syntaxi příkazu CREATE, pak nezoufejte. Toto je pouze uvedený příklad a k jeho syntaxi se dostaneme v příštím díle.)

NOT NULL: Tento modifikátor je velice užitečný, protože zaručuje, že do daného pole nebudeme smět uložit prázdnou hodnotu.

NULL: Jednoduše řečeno prázdná hodnota. Pozor ale na zaměňování hodnoty ““ s NULL. To není totéž! Hodnota ““ se sice tváří, že je prázdnou hodnotou, ale prakticky tomu tak není.

PRIMARY KEY: Česky řečeno primární klíč. V poli s tímto atributem musí mít každý záznam jedinečnou hodnotu, tj. nesmí se opakovat stejné hodnoty. Taktéž není povoleno používat jej ve spojení s atributem NULL. Atribut PRIMARY KEY se využívá k vytváření relací, takže se doporučuje, aby byl v tabulce umístěn alespoň jednou.

UNIQUE: Má podobnou vlastnost jako primární klíč, tj. zamezuje uložení duplicitních hodnot. Využívá se zřídka.

UNSIGNED: O tomto atributu jsem se již zmínil v minulém díle. Pomocí UNSIGNED můžete u celočíselných typů zdvojnásobit jejich kladné rozmezí.

ZEROFILL: Tento atribut slouží k automatickému doplňování nul. Pokud definujeme datový typ INT (6) ZEROFILL a do něj následně uložíme hodnotu 30, pak uložená hodnota bude vypadat jako 000030.

Závěrem

Toto je k úplnému výčtu datových typů vše. V příštím díle vám ukážu, jak se v MySQL pracuje s tabulkami.
Diskuze (2) Další článek: Svobodný software 14 – Mýty o svobodném software I.

Témata článku: , , , , , , , , , , , , , , , , ,