Úvod
Datové typy MySQL je důležité pochopit, než začnete vytvářet databázi MySQL a pracovat s ní. Pokud správně přiřadíte každý sloupec, zajistíte, že databáze bude optimalizována a data budou bezpečně uložena.
V tomto tutoriálu se dozvíte o různých typech dat MySQL.
Co jsou datové typy v MySQL?
Název a datový typ definují každý sloupec v databázové tabulce. Zadaný datový typ říká MySQL, jaký druh hodnot bude ukládat, kolik místa vyžadují a jaký typ operací může provádět s tímto typem dat.
Datové typy MySQL
Existuje mnoho různých datových typů, které můžete uložit do tabulky MySQL.
Jsou seskupeny do pěti hlavních kategorií:
- Číselné datové typy
- Datové typy data a času
- Datové typy řetězců
- Typy prostorových dat
- Datové typy JSON
Čtěte dále a zjistěte více o každé skupině a uvidíte, jaké datové typy zahrnují.
Číselné datové typy
Při ukládání čísel do databázového sloupce použijte jeden z číselných datových typů. MySQL podporuje přesné i přibližné číselné typy dat.
Číselná kategorie je dále rozdělena do následujících skupin:
- Celočíselné datové typy
- Datové typy s plovoucí desetinnou čárkou
- Datové typy s pevným bodem
- Datové typy bitové hodnoty
Typy celých čísel
Celočíselné datové typy se používají pro celá čísla (celá čísla). Zahrnují kladné i záporné hodnoty. Nezpracovávají však zlomková čísla.
Proto čísla jako 30 a -5435 mohou být uložena jako celočíselné datové typy, zatímco 5, 3 nebo 1/5 nikoli.
Typy celých čísel jsou se znaménkem nebo bez znaménka. Dále se dělí podle velikosti, liší se délkou a dosahem.
Bajty | Rozsah (nepodepsaný) | Rozsah (podepsaný) | |
---|---|---|---|
TINYINT | 1 | od 0 do 255 | od -128 do 127 |
SMALLINT | 2 | od 0 do 65535 | od -32768 do 32767 |
MEDIUMINT | 3 | od 0 do 16777215 | od -8388608 do 8388607 |
INT | 4 | od 0 do 4294967295 | od -2147483648 do 2147483647 |
VELKÝ | 8 | od 0 do 18446744073709551615 | od -9223372036854775808 do 9223372036854775807 |
TINYINT
je velmi malé celé číslo, které používá 1 bajt skladování. Skládá se až ze 4 číslic . Jeho rozsah bez znaménka je od 0 na 255 . Pokud je podepsáno, má rozsah od -128 na 127 .
SMALLINT
je malé celé číslo, které používá 2 bajty skladování. Skládá se až z 5 číslic . Jeho rozsah bez znaménka je od 0 na 65535 . Při podpisu má rozsah od -32768 na 32767 .
MEDIUMINT
je středně velké celé číslo, které používá 3 bajty skladování. Může mít až 9 číslic . Pokud není podepsáno, má rozsah od 0 na 16777215 . Podepsáno, jeho minimální hodnota je -8388608 , přičemž jeho maximální hodnota je 8388607 .
INT
je celé číslo, které používá 4 bajty skladování. Používá až 11 číslic . Pokud není podepsán, pohybuje se od 0 na 4294967295 . Pokud je podepsáno, má rozsah od -2147483648 na 2147483647 .
BIGINT
je velké celé číslo, které používá 8 bajtů skladování. Má až 20 číslic . Jeho minimální hodnota se znaménkem je 0 , přičemž jeho maximální hodnota se znaménkem je 18446744073709551615 . Pokud je podepsán, má rozsah od -9223372036854775808 na 9223372036854775807 .
Typy s plovoucí desetinnou čárkou
Číselné datové typy s plovoucí desetinnou čárkou jsou racionální čísla používaná k reprezentaci přibližných hodnot. Používejte datové typy s plovoucí desetinnou čárkou pro vysoce přesné výpočty.
Mezi typy s plovoucí desetinnou čárkou patří:
FLOAT
představuje hodnoty s jednou přesností, které používají 4 bajty a zahrnují až 6 nebo 7 platných číslic.DOUBLE
představují hodnoty s dvojitou přesností, které používají 8 bajtů a zahrnují až 15 nebo 16 platných číslic.
Základní syntaxe pro definici FLOAT
/DOUBLE
datový typ je FLOAT(M,D)
/DOUBLE(M,D)
.
M
představuje celkový počet číslic, zatímco D
je počet desetinných míst. Například hodnota 5143,234 by bylo definováno jako 7,3 protože má celkem 7 číslic a 3 číslice za desetinnou čárkou.
Můžete také použít FLOAT(P)
syntaxe k určení datového typu s plovoucí desetinnou čárkou, kde P
specifikuje přesnost. Pokud P
má hodnotu od 0 do 23 , jedná se o sloup s jednou přesností. Pokud je přesnost mezi 24 a 53 , jedná se o sloup s dvojitou přesností.
Bajty | Rozsah (nepodepsaný) | Rozsah (podepsaný) | |
---|---|---|---|
PLOVÁVÁNÍ | 4 | z 1,175494351E-38 na 3,402823466E+38 | od -3,402823466E+38 do -1,175494351E-38 |
DVOJNÁSOBNÁ | 8 | od 0 a 2,22507385850720 14E- 308 do 1,797693134862315 7E+ 308 | od -1,7976931348623 157E+ 308 do -2,22507385850720 14E- 308 |
Typy s pevným bodem
Pro uložení přesných číselných hodnot použijte datový typ s pevnou řádovou čárkou – DECIMAL
. Protože představuje přesné číslo, tento typ dat se většinou používá pro data, která se spoléhají na přesné hodnoty (jako jsou peněžní údaje).
Základní syntaxe je DECIMAL(P,D)
, kde P
znamená přesnost (počet platných číslic) a D
znamená měřítko (počet číslic za desetinnou čárkou).
Maximální počet číslic pro přesnost je 65 , přičemž maximální hodnota pro měřítko je 30 .
Pokud nedefinujete přesnost a měřítko, sloupec použije výchozí hodnoty. Ve výchozím nastavení jsou hodnoty P,D 10,0 .
Typy bitových hodnot
BIT
datový typ ukládá binární hodnoty. Při vytváření sloupce, který bude takové hodnoty ukládat, definujete počet bitových hodnot v rozsahu 1 až 64 .
Syntaxe tohoto datového typu MySQL je BIT(N)
. Pokud nezadáte N
, výchozí hodnota je 1 .
Datové typy data a času
Datum a čas jsou běžně používané datové typy. Ať už ukládáte čas zadání dat, datum narození nebo aktuální časové razítko, použijete jeden z následujících sloupců.
Typy dat data a času zahrnují:
DATETIME
,TIMESTAMP
DATE
TIME
YEAR
DATETIME, TIMESTAMP
Chcete-li uložit hodnoty data a času, použijte buď DATETIME
nebo TIMESTAMP
. Oba datové typy ukládají informace ve formátu RRRR-MM-DD HH:MM:SS formát. Zahrnuje y ucho, m onth, d ano, h náš, m minuty a s sekundy.
Hlavním rozdílem mezi těmito dvěma je jejich rozsah:
DATETIME
hodnoty se pohybují od 1000-01-01 00:00:00 do 9999-12-31 23:59:59 .TIMESTAMP
hodnoty se pohybují od 1970-01-01 00:00:01 do 2038-01-19 03:14:07 .
U obou možností můžete zahrnout zlomky sekund. Chcete-li tak učinit, zadejte přesnost podle syntaxe DATETIME(p)
/TIMESTAMP(p)
.
Chcete-li například uložit časové razítko 10:53 1. března 2021 , se třemi zlomky sekund zadejte datový typ TIMESTAMP(3)
. Záznam je uložen jako:2021-03-01 22:53:35.346 .
DATUM
DATE
se používá pro ukládání hodnot data ve formátu RRRR-MM-DD (rok, měsíc, datum).
Datový typ podporuje rozsah 1000-01-01 až 9999-12-31 .
ČAS
TIME
se používá k uložení časových hodnot jako HH-MM-SS (hodiny, minuty, sekundy) nebo HHH-MM-SS . Záznamy zobrazující uplynulý čas nebo časové rozdíly jsou uloženy a načteny v delším formátu (pokud potřebují více číslic pro hodiny).
Datový typ podporuje rozsah 1000-01-01 až 9999-12-31 .
ROK
YEAR
ukládá hodnoty roku ve formátu YYYY . Podporuje hodnoty v rozsahu 1901-2155 .
Zatímco verze starší než MySQL 5.7.5 podporovaly 2 i 4místné položky pro YEAR
, od vydání 5.7.5 neexistuje žádná dvoumístná podpora.
Datové typy řetězců
Při ukládání řetězců dat použijte jeden z řetězcových datových typů. Mohou obsahovat písmena, čísla, obrázky nebo soubory.
V souladu s tím existuje několik různých typů dat řetězce:
CHAR
aVARCHAR
BINARY
aVARBINARY
BLOB
aTEXT
ENUM
SET
CHAR a VARCHAR
CHAR
a VARCHAR
jsou datové typy používané k ukládání nebinárních řetězců. Hlavním rozdílem mezi těmito dvěma je způsob ukládání dat.
CHAR
ukládá řetězce pevné délky (až 255 znaky). Při vytváření CHAR
zadáte délku pomocí CHAR(N)
syntax. N
je počet znaků, které chcete obsadit. Pokud délku nedefinujete, použije výchozí hodnotu 1 .
Tyto hodnoty jsou uloženy vpravo doplněné zadanou délkou. Pokud tedy nastavíte CHAR(5)
sloupec a uložit do něj tříznakový záznam, stále zabírá pět znaků.
VARCHAR
ukládá řetězce proměnné délky. Zatímco délka musí být definována při vytváření sloupce, hodnoty nejsou vyplněny vpravo. Mají maximální limit, ale délka není pevná a liší se v závislosti na datech.
Dříve byl rozsah položek od 0 do 255 . Po vydání MySQL 5.0.3 VARCHAR
rozsah je až 65 535 znaků .
BINARY a VARBINARY
BINARY
a VARBINARY
datové typy jsou podobné dříve zmíněným CHAR
a VARCHAR
. Hlavní rozdíl mezi těmito dvěma skupinami je v tom, že BINARY
a VARBINARY
se používají pro binární řetězce.
BINARY
se používá pro binární řetězce s pevnou délkou, až do 255 bajtů . Hlavní syntaxe pro definování takového sloupce je BINARY(N)
, kde N
je počet bajtů.
VARBINARY
ukládá binární řetězce proměnné délky. MySQL verze 5.0.3 a novější ukládá až 65 535 bajtů .
BLOB a TEXT
Oba BLOB
a TEXT
se používají k ukládání velkého množství dat.
BLOB
úchyty B inary L arge O bjects (tj. velké sady binárních dat, jako jsou obrázky, audio nebo soubory PDF).
Existují 4 druhy datových typů BLOB, které lze použít v závislosti na velikosti, kterou vaše data vyžadují:
TINYBLOB
(0 – 255; 255 bajtů)BLOB
(0 – 65 535; 16 kB)MEDIUMBLOB
(0 – 16 777 215; 16 MB)LONGBLOB
(0 – 4 294 967 295; 4 GB)
TEXT
datové typy jsou pro ukládání delších řetězců textu. Podle množství požadovaných dat existuje:
TINYTEXT
(0 – 255; 255 bajtů)TEXT
(0 – 65 535; 16 kB)MEDIUMTEXT
(0 – 16 777 215; 16 MB)LONGTEXT
(0 – 4 294 967 295; 4 GB)
ENUM
ENUM
datový typ se používá k uložení jedné z předdefinovaných možných hodnot ve sloupci. Sloupec může mít až 65535 odlišné hodnoty.
Při vytváření ENUM
tabulky v MySQL, zadáte seznam všech povolených hodnot.
NASTAVIT
Jako ENUM
, SET
datový typ má předdefinovaný seznam možných hodnot uložených ve sloupci.
Hlavní rozdíl mezi těmito dvěma je, že SET
umožňuje, aby položka měla více než jednu hodnotu.
Pokud je například sloupec definován jako SET('Red','Orange','Yellow','Green')
a má v seznamu čtyři možné hodnoty, jedna položka může mít hodnotu ‘Červená’ , zatímco jiný může mít hodnotu ‘Červená‘, ‚Žlutá‘ .
Maximální počet povolených hodnot je 64 .
Typy prostorových dat
Při ukládání prostorových dat můžete použít jeden z mnoha různých typů prostorových dat, které MySQL podporuje. Používají se k reprezentaci informací o geometrických tvarech a fyzickém umístění.
Můžeme je rozdělit do dvou skupin:
- Jednotlivé hodnoty geometrie
- Sbírky hodnot
Hodnoty jedné geometrie
Jednotlivé typy dat geometrie zahrnují GEOMETRY
, POINT
, LINESTRING
a POLYGON
.
GEOMETRY
ukládá jakýkoli typ geometrie/prostorové hodnoty.POINT
se používá pro hodnotu jednoho bodu.LINESTRING
ukládá kolekci více bodů, které tvoří čáru.POLYGON
je datový typ používaný k uložení kolekce více bodů, které tvoří polygonální povrch.
Sbírka hodnot
Sbírka datových typů hodnot zahrnuje GEOMETRYCOLLECTION
, MULTIPOINT
, MULTILINE
a MULTIPOLYGON
.
GEOMETRYCOLLECTION
ukládá kolekci geometrie/prostorových hodnot.MULTIPOINT
se používá pro uložení kolekce více bodových hodnot.MULTILINE
ukládá kolekci více řádků.MULTIPOLYGON
se používá pro kolekci více polygonů.
Datové typy JSON
Od verze 5.7.8 obsahuje MySQL podporu pro nativní JSON
datový typ, který uživatelům umožňuje ukládat a spravovat dokumenty JSON prostřednictvím databáze.
MySQL zajišťuje, že dokumenty JSON jsou platné a ukládá je do sloupce JSON.