Większość relatywnych baz danych, takich jak MySQL, posiada jednakowe typy danych. Różnią się one zarówno rodzajem przechowywanych informacji jak i ich długością. W dzisiejszych czasach, szybkiego internetu oraz bardzo wydajnych serwerów, odpowiedni dobór zakresu zmiennej jest często bagatelizowany. Spora część programistów nie zwraca na to uwagi i stosują za duże typy danych. W przypadku małych serwisów faktycznie nie ma to dużego znaczenia, jednak jeżeli taka strona / portal się rozrośnie może to ją mocno spowolnić, a tego lepiej uniknąć zawczasu. Pewnie sporo osób pomięta stwierdzenie wolno, wolniej, nasza-klasa ;). Nie twierdzę, że nieodpowiedni dobór zakresu zmiennych był akurat w tym przypadku odpowiedzialny za prędkość działania ale tak może skończyć i wasza strona jeżeli zamiast “tiniint” będziecie stosować “bigint” czy “numeric” lub każdy nawet najkrótszy ciąg znaków będziecie umieszczac w “longtext” .

Przejdzmy do tematu. Standardowo, typy danych można podzilić na:

  • liczby całkowite
  • liczby zmiennoprzecinkowe
  • łańcuchy znaków (ciągi)
  • pozostałe

liczby całkowite

Typ danych Rozmiar Opis i zakres danych
TINYINT(dł.) 1 bajt Liczby całkowite. Zakres od -128 do 127, lub od 0 do 255.
SMALLINT(dł.) 2 bajty Liczby całkowite. Zakres od -32 768 do 32 767, lub od 0 do 65 535.
MEDIUMINT(dł.) 3 bajty Liczby całkowite. Zakres od -8 388 608 do 8 388 607,
lub od 0 do 16 777 215.
INT(dł.) 4 bajty Liczby całkowite. Zakres od –2 147 483 648 do 2 147 483 647, lub od 0 do 4 294 967 295
BIGINT(dł.) 8 bajtów Liczby całkowite.
Zakres od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807,
lub od 0 do 18 446 744 073 709 551 615

liczby zmiennoprzecinkowe – rzeczywiste

Typ danych Rozmiar Opis i zakres danych
FLOAT 4 bajty Mała liczba zmiennoprzecinkowa (rzeczywista)
DOUBLE(dł, miej) 8 bajtów Duża liczba zmiennoprzecinkowa (rzeczywista)
DECIMAL(dł, miej) Długość +1 lub +2 bajty Liczba rzeczywista przechowywana jako łańcuch.
Można określić stałą ilość miejsc po przecinku

Łańcuchy znaków (ciągi)

Typ danych Rozmiar Opis i zakres danych
CHAR(dł.) Określony w nawiasie (bajty) Pole tekstowe o stałej długości,
przechowuje od 0 do 255 znaków.
VARCHAR(dł.) Długość łańcucha +1 bajt Pole tekstowe o zmiennej długości,
przechowuje od 0 do 255 znaków.
TINYTEXT Długość łańcucha +1 bajt Łańcuch przechowujący od 0 do 255 znaków.
TEXT Długość łańcucha +2 bajty Tekst o długości nie przekraczającej 65 535 znaków.
MEDIUMTEXT Długość łańcucha +3 bajty Tekst o długości nie przekraczającej 16 777 215 znaków
LONGTEXT Długość łańcucha +4 bajty Tekst o długości nie przekraczającej 4 294 967 295 znaków

Pozostałe

Typ danych Rozmiar Opis i zakres danych
DATE 3 bajty Data w formacie RRRR-MM-DD
DATETIME 8 bajtów Data w formacie RRRR-MM-DD HH:MM:SS
TIMESTAMP 4 bajty Data w formacie RRRRMMDDHHMMSS,
zakres kończy się w roku 2037 (epoka Uniksa)
TIME 3 bajty Czas w formacie: HH:MM:SS
ENUM 1 lub 2 bajty Enumeracja (wyliczenie). Każdy rekord ENUM musi być unikatowy w danej kolumnie
SET 1, 2, 3, 4 lub 8 bajtów Podobnie jak w przypadku ENUM, lecz bez dodatkowej restrykcji.