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. |