Na polecenie "Napisz Tak lub Nie" użytkownik wpisuje "Tak lub Nie".
MySQL - Typy kolumn

W MySQL istnieje wiele typów kolumn (pól), ale wszystkie dają się zaklasyfikować do 3 kategorii: numeryczne, daty i czasu lub znakowe. Przegląd wszystkich typów kolumn przedstawia poniższa tabela.

Efektywne wykorzystanie przestrzeni dyskowej bazy oraz optymalne wykorzystanie możliwości i szybkości działania MySQL wymaga przemyślanego doboru typu pól do przechowywanych w nich wartości. Dlatego projektując kolejne tabele należy dokładnie przemyśleć i starannie dobierać typy jej pól.

Oznaczenia w tabeli:

Mmaksymalna wyświetlana długość pola (<= 255)
Dilość miejsc po kropce dziesiętnej w liczbach rzeczywistych ( M-2 <= D <= 30)
[ ]użycie atrybutu jest opcjonalne
Uwagi:
  1. Użycie atrybutu ZEROFILL powoduje automatyczne dodanie atrybutu UNSIGNED do tej kolumny.
     
  2. Ustawienie atrybutu UNSIGNED powoduje, że wynik odejmowania z użyciem tej kolumny będzie zawsze dodatni.
     

Typy numeryczne

Typ Zakres wartości Opis
bez UNSIGNED z UNSIGNED
TINYINT[(M)] [UNSIGNED] [ZEROFILL] -128 do 127 0 do 255 liczba całkowita
BIT
BOOL
-- -- synonim dla TINYINT(1)
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] -32768 do 32767 0 do 65535 liczba całkowita
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] -8388608 do 8388607 0 do 16777215 liczba całkowita
INT[(M)] [UNSIGNED] [ZEROFILL]
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
-2147483648
do
2147483647
0
do
4294967295
liczba całkowita
BIGINT[(M)] [UNSIGNED] [ZEROFILL] -9223372036854775808
do
9223372036854775807
0
do
18 446 744 073 709 551 615
liczba całkowita
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] -3.402823466E+38
do
-1.175494351E-38

0

1.175494351E-38
do
3.402823466E+38
j.w., ale bez liczb ujemnych liczba rzeczywista
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
REAL[(M,D)] [UNSIGNED] [ZEROFILL]
-1.7976931348623E+308
do
-2.2250738585072E-308

0

2.2250738585072E-308
do
1.7976931348623E+308
j.w., ale bez liczb ujemnych liczba rzeczywista
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
DEC[(M[,D])] [UNSIGNED] [ZEROFILL]
NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
jak DOUBLE jak DOUBLE liczba rzeczywista zapisana jako łańcuch znaków (CHAR).
Domyślna wartość D = 0.
Domyślna wartość M = 10.

 

Typy daty i czasu

Typ Opis
DATE Data, z dopuszczalnym zakresem od '1000-01-01' do '9999-12-31'.
Data wyświetlana jest w formacie 'YYYY-MM-DD', ale może być wstawiana jako wartość znakowa lub numeryczna.

Błędne wartości zastępowane są wartością: '0000-00-00'
DATETIME Połączona data i czas z dopuszczalnym zakresem od '1000-01-01 00:00:00' do '9999-12-31 23:59:59'.
Wyświetlana w formacie: 'YYYY-MM-DD HH:MM:SS', ale może być wstawiana jako wartość znakowa lub numeryczna.

Błędne wartości zastępowane są wartością: '0000-00-00 00:00:00'
TIMESTAMP[(M)] Data i czas, z wartościami od '1970-01-01 00:00:00' do '2037-12-31 23:59:59'.
Wyświetlana w formacie YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD lub YYMMDD zależnie od wartości M: 14 (lub brak), 12, 8 lub 6.
Może być użyta jako wartość numeryczna lub znakowa.
Jeżeli w instrukcjach INSERT i UPDATE pominiemy wartość dla kolumny tego typu lub podamy wartość NULL, to zostanie w nie automatycznie wstawiona data i czas bieżące.

Błędne wartości zastępowane są wartością: '00000000000000'
TIME Czas z zakresu od '-838:59:59' do '838:59:59'.
Wyświetlany w formacie 'HH:MM:SS', ale może być wstawiana jako wartość znakowa lub numeryczna.

Błędne wartości zastępowane są wartością: '00:00:00'
YEAR[(2|4)] Rok jako liczba 2- lub 4-cyfrowa (domyślnie 4-syfrowa).
Dla 4-cyfrowej zakres wynosi od 1901 do 2155, a dla 2-cyfrowej od 1970 do 2069 (70-69).
Wyświetlany jest zawsze w formacie YYYY.

Błędne wartości zastępowane są wartością: '0000'

 

Typy znakowe

Typ Opis
[NATIONAL] CHAR(M) [BINARY] Pole znakowe stałej długości uzupełniane z prawej strony spacjami.
0 <= M <= 255.
Wartości typu CHAR są porównywane bez rozróżniania wielkości liter poza przypadkiem, kiedy podano atrybut BINARY.
CHAR Synonim dla CHAR(1).
[NATIONAL] VARCHAR(M) [BINARY] Analogicznie do CHAR(M).
Jedyna różnica polega na tym, że pole jest zmiennej długości (obcinane są końcowe spacje).
TINYBLOB
TINYTEXT
Pole znakowe o długości do 255 (2^8 - 1) znaków.
BLOB
TEXT
Pole znakowe o długości do 65535 (2^16 - 1) znaków.
MEDIUMBLOB
MEDIUMTEXT
Pole znakowe o długości do 16777215 (2^24 - 1) znaków.
LONGBLOB
LONGTEXT
Pole znakowe o długości do 4294967295 (2^32 - 1) znaków.
ENUM('wartość1','wartość2',...) Typ wyliczeniowy.
Pole może przyjąć tylko jedną z wartości umieszczonych na liście, wartość NULL lub "".
Maksymalna ilość elementów listy: 65535.

Przykład:
kolumna zadeklarowana jako ENUM("aaa", "bbb", "ccc") może przyjąć jedną z wartości: NULL, "", "aaa", "bbb", "ccc".
SET('wartość1','wartość2',...) Typ wyliczeniowy.
Pole może przyjąć 0 lub więcej wartości z listy.
Maksymalna ilość elementów listy: 64.
Wartości zapamiętywane są poprzez ustawienie odpowiednich bitów 8-bajtowej liczby.

Przykład:
deklarujemy pola jako SET("a","b","c","d")
- przypisanie wartości "a" będzie zapisane jako "00001"
- przypisanie wartości "e" będzie zapisane jako "10000"
- przypisanie wartości "a,e" będzie zapisane jako "10001"

Typy CHAR i VARCHAR są podobne, ale różnią się sposobem przechowywania i wyświetlania oraz ilością zajmowanego miejsca. Pokazuje to poniższy przykład:

Wartość Typ CHAR(4) Ilość bajtów Typ VARCHAR(4) Ilość bajtów
'' ' ' 4 bajty '' 1 bajt
'ab' 'ab ' 4 bajty 'ab' 3 bajty
'abcd' 'abcd' 4 bajty 'abcd' 5 bajtów
'abcdefgh' 'abcd' 4 bajty 'abcd' 5 bajtów
« wstecz   dalej »