Typy danych w kolumnach w MySQL
W MySQL wyróżnia się trzy podstawowe typy danych: liczbowy, daty i czasu oraz łańcuchowy. Każda z tych kategori dzieli się na szereg podtypow.
W przypadku niektórych typów danych możliwe jest określenie maksymalnej szerokosci wyswietlania. W poniższych tabelach wiekośc tę oznaczono literą M znajduje się w nawiasach kwadratowych. Największa dopuszczalna zawartośc parametru M wynosi 255.
Wszystkie parametry opcjonalne są przedstawione w nawiasach kwadratowych.
Typy liczbowe
Typy liczbowe dzielą się na całkowito liczbowe i zmiennoprzecinkowe. W przypadku tych drugich istnieje możliwośc zdeklarowania liczby cyfr znaczących po przecinku. W tabelach wielkość ta jest oznaczona symbolem D.
W przypadku typów całkowito liczbowych można je zawęzić do typu UNSIGNED (nieujemny).
Kolumna "Pamięć" określa ilość zajmowanej pamięci w bajtach!
Typy całkowito liczbowe
| Typ | Zakres | Pamięć | Opis |
|---|---|---|---|
| TINYINT[(M)] | -127..128 lub 0..255 | 1 | Bardzo małe liczby całkowite |
| BIT | - | - | Synonim TINYINT |
| BOOL | - | - | Synonim TINYINT |
| SMALLINT[(M)] | -32768..32767 lub 0..65535 | 2 | Małe liczby całkowite |
| MEDIUMINT[(M)] | -8388608..8388607 lub 0..16777215 | 3 | Średnie liczby całkowite |
| INT[(M)] | -231..231-1 lub 0..232-1 | 4 | Zwykłe liczby całkowite |
| INTEGER[(M)] | - | - | Synonim typu INT |
| BIGINT[(M)] | -263..263-1 lub 0..264-1 | 8 | Duże liczby całkowite |
Typy zmiennoprzecinkowe
| Typ | Zakres | Pamięć | Opis |
|---|---|---|---|
| FLOAT(precyzja) | zaleznie od precyzji | różny | Używany do deklarowania liczb zmiennoprzecinkowych o pojedynczej lub podwójnej precyzji |
| FLOAT[(M, D)] | ±1.175494351E-38 ±3.402823466E+38 | 4 | Liczby zmiennoprzecinkowe o zmiennej precyzji. Typ ten jest równoznaczny z typem FLOAT(4), pozwala przy tym na określenie szerokości wyświetlania i liczby cyfr znaczących po przecinku. |
| DOUBLE[(M, D)] | ±1.7976931348623157E -308 ±2.2250738585072014E +308 | 8 | Liczby zmiennoprzecinkowe o podwójnej precyzji. Typ ten jest równoznaczny z typem FLOAT(8), pozwala przy tym na określenie szerokości wyświetlania i liczby cyfr znaczących po przecinku. |
| DOUBLE PRECSION[(M, D)] | - | - | Synonim typu DOUBLE[(M, D)] |
| REAL[(M, D)] | - | - | Synonim typu DOUBLE[(M, D)] |
| DECIMAL[(M[, D])] | różny | M+2 | Liczba zmiennoprzecinkowa przechowywana jako zmienna typu CHAR. Zakreszależy od wartości M - szerokości wyświetlania. |
| NUMERIC[(M, D)] | - | - | Synonim typu DECIMAL |
| DEC[(M, D)] | - | - | Synonim typu DECIMAL |
Typy daty i czasu
MySQL obsługuje wiele typów daty i czas, w formie lańcuchowej lub liczbowej. Charakterystyczną cechą typu TIMESTAMP jest to, że jeżeli pole tego typu zostanie nie wypełnione, wówczas automatycznie zostanie w nim zapisany aktualny czas i data.
Typy daty i czasu
| Typ | Zakres | Opis |
|---|---|---|
| DATE | 1000-01-01 do 9999-12-31 | Data wyświetlana w formacie RRRR-MM-DD. |
| TIME | -838:59:59 do 838:59:50 | Czas wyświetlany w formacie GG:MM:SS. Zakres typu jest tak szeroki, że zapewne nigdy nie będzie w pełni wykorzystany. |
| DATETIME | 1000-01-01 00:00:00 do 9999-12-31 | Data i czas wyświetlane w formacie RRRR-MM-DD GG:MM:SS |
| TIMESTAMP[(M)] | 1970-01-01 00:00:00 do roku 2037 | Typ szczególnie przydatny do śledzenia transakcji. Format wyświetlania zależy od wartości parametru M, a górny zakres typu od systemu operacyjnego. |
| YEAR[(2|4)] | 70-69(1970-2069) lub 1901-2155 | Rok wyświetlany w formie dwu- lub czterocfrowej. Jak widać każdy z nich ma odmienny zakres. |
Formaty wyświetlania wartości typu TIMESTAMP
| Podany typ | Format wyświetlania |
|---|---|
| TIMESTAMP | RRRRMMDDGGMMSS |
| TIMESTAMP(14) | RRRRMMDDGGMMSS |
| TIMESTAMP(12) | RRMMDDGGMMSS |
| TIMESTAMP(10) | RRMMDDGGMM |
| TIMESTAMP(8) | RRRRMMDD |
| TIMESTAMP(6) | RRMMDD |
| TIMESTAMP(4) | RRMM |
| TIMESTAMP(2) | RR |
Typy łańcuchowe
Typy łańcuchowe dzileimy na trzy grupy
- krótkie - krótkie fragmenty tekstu np.: CHAR
- długie - długie fragmenty tekstu oraz dane binarne np.: BLOB
- specjalne - typy wyliczeniowe np.: ENUM
Zwykłe typy łańcuchowe
| Typ | Zakres | Opis |
|---|---|---|
| [NATIONAL] CHAR(M) [BINARY] | 1-255 znaków | Łańcuch znaków o stałej długości M, gdzie M może przybierać wartości od 1 do 255. Słowo kluczowe NATIONAL wymusza użycie domyślnego zbioru znaków. Zbiór ten jest i tak domyślnie wykorzystywany przez MySQL, jednak opcja ta została udostępniona jako część standardu ANSI SQL. Słowo kluczowe BINARY wyłącza rozpoznawanie wielkości liter (domyślnie wielkość liter jest rozpoznawana). |
| CHAR | 1 | Synonim typu CHAR(1) |
| [NATIONAL] VARCHAR(M) [BINARY] | 1-255 | Łańcuch znaków o różnejdługości, reszta jak wyżej. |
Typy TEXT i BLOB
| Typ | Maksymalna długość (w znakach) | Opis |
|---|---|---|
| TINYBLOB | 255 | Mały obiekt BLOB. |
| TINYTEXT | 255 | Krótkie pole tekstowe. |
| BLOB | 65535 | Zwykły obiekt BLOB. |
| TEXT | 65535 | Pole tekstowe o zwykłej długości |
| MEDIUMBLOB | 16777215 | Średni obiekt BLOB. |
| MEDIUMTXT | 16777215 | Pole tekstowe o średniej długości. |
| LONGBLOB | 4294967295 | Duży obiekt BLOB. |
| LONGTEXT | 4294967295 | Długie pole tekstowe. |
Typy SET i ENUM
| Typ | Maksymalna ilość wartości w zbiorze | Opis |
|---|---|---|
| ENUM('wartosc1','wartosc2',...) | 65535 | W kolumnie tego typu może znajdować się tylko jedna wartość ze zbioru wartości dopuszczalnych lub NULL |
| SET('wartosc1','wartosc2',...) | 64 | W kolumnie tego typu może znajdować podzbiór zbioru wartości dopuszczalnych lub NULL. |
Źródło: "PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty (wyadanie drugie)" wydawnictwa Helion.