MySQL generalnie posiada trzy główne kategorie typów danych. Są to typy znakowe, numeryczne oraz daty. Każdy programista zgodnie ze sztuką, powinien stosować, w zależności od używanych danych odpowiedni typ. Na przykład jeśli dane mają zawierać w sobie datę, powinno się używać typu danych DATETIME, który ma rozmiar 8 bajtów. Dzięki czemu aplikacja będzie zoptymalizowana, jeśli chodzi o wydajność serwera na którym będzie działała.
Typy danych w MySQL:
Nazwa lub alias |
Rozmiar |
Użycie |
TINYINT(M)
(synonimy - BIT, BOOL, BOOLEAN) |
1 bajt |
Jeśli nie ma znaku to przechowuje wartości od 0 do 255,
w innym wypadku od -128 do 127 |
SMALLINT(M) |
2 bajty |
Jeśli nie ma znaku to przechowuje wartości od 0 do 65535,
w innym wypadku od -32768 do 32767 |
MEDIUMINT(M) |
3 bajty |
Jeśli nie ma znaku to przechowuje wartości od 0 do 16777215,
w przeciwnym razie od -8388608 do 8388607 |
INT(M)
INTEGER(M) |
4 bajty |
Jeśli nie ma znaku to przechowuje wartości od 0 do 4294967295,
w przeciwnym wypadku od -2147483648 do 2147483647 |
BIGINT(M) |
8 bajtów |
Jeśli nie ma znaku to przechowuje wartości od 0 do
18446744073709551615, w innym wypadku od
-9223372036854775808 do 9223372036854775807 |
FLOAT
(precyzja) |
4 lub 8 bajtów |
Parametr precyzja jest liczbą całkowitą o maksymalnej
wartości równej 53. Jeśli precyzja <= 24, liczba jest
przekształcona do typu FLOAT, natomiast jeśli precyzja
> 24 i <=53 to jest ona przekształcana do typu DOUBLE. |
FLOAT(M,D) |
4 bajty |
Liczba zmiennopozycyjna o pojedynczej precyzji |
DOUBLE(M,D) |
8 bajtów |
Liczba zmiennopozycyjna o podwójnej precyzji |
DECIMAL(M,D) |
M+1 lub M+2 bajtów |
Nieskompresowana liczba zmiennopozycyjna
przechowywana jak CHAR. Używa się jej do
przechowywania niewielkich liczb dziesiętnych |
DATE |
3 bajty |
Data wyświetlana (typ daty w MySQL) w formacie RRRR-MM-DD |
DATETIME |
8 bajtów |
Data wyświetlana w szerszym formacie
RRRR-MM-DD GG:MM:SS |
TIME |
3 bajty |
Czas wyświetlany w formacie GGG:MM:SS.
Wartość GGG ma zakres od -838 do 838. |
YEAR |
1 bajt |
Rok wyświetlany w formacie RRRR, który ma
wartość od 1901 do 2155.
Do zapisu wcześniejszego roku należy użyć typu TINYINT. |
CHAR(M) |
M bajtów |
Typ o stałej długości. Parametr M musi mieć
mniejszą wartość niż 255 |
VARCHAR(M) |
do M bajtów |
Typ o zmiennej długości. Parametr M musi mieć
mniejszą wartość niż 255 |
TINYTEXT
lub
TINYBLOB |
do 255 bajtów |
TINYTEXT ignoruje wielkość znaków, natomiast
TINYBLOB już tak przy sortowaniu i porównywaniu |
BLOB
lub
TEXT |
do 64KB |
BLOB rozróżnia wielkość znaków w trakcie
porównywania i sortowania, natomiast TEXT to ignoruje |
MEDIUMBLOB
lub
MEDIUMTEXT |
do 16MB |
MEDIUMBLOB rozróżnia wielkość znaków w trakcie
porównywania i sortowania, natomiast MEDIUMTEXT to ignoruje |
LONGBLOB
lub
LONGTEXT |
do 4GB |
LONGBLOB rozróżnia wielkość znaków przy
porównywaniu i sortowaniu, natomiast LONGTEXT to ignoruje |
ENUM (wartość1,
... wartośćN) |
1 lub 2 bajty |
Pozwala na zapisanie do 65535 odrębnych wartości |
SET(wartość1,
... wartośćN) |
do 8 bajtów |
Pozwala na zapisanie do 64 odrębnych wartości |
(M) - oznacza maksymalną liczbę wyświetlanych cyfr
(D) - oznacza maksymalną liczbę miejsc dziesiętnych w liczbie zmiennoprzecinkowej
Zobacz również typy danych w języku PHP.