Wiki-учебник по веб-технологиям: MySQL/ОписаниеДанных ...

Главная | |

Типы данных MySQL


Оглавление документа


Что и как и как много хранит MySQL?

Данный материал создан для тех, кто только собирается определиться какой тип данных лучше выбрать для хранения значений в БД MySQL.

Целые числа


byte — кол-во байт на хранение,
max/min — предельные значения,
umax/umin — беззнаковые предельные значения

INTEGER


Тип поля INT использует 4 байта для хранения значения. Минимально значение -2147483648, максимальное 2147483647. Беззнаковый INT (unsigned) хранит значения от 0 до 4294967295.

'int'=>Array('byte'=>4, 'min'=>-2147483648, 'max'=>2147483647, 'umin'=>0, 'umax'=>4294967295)

BIGINT


Тип поля BIGINT использует 4 байта для хранения значения. Минимальное значение -9223372036854775808, максимальное 9223372036854775807. Беззнаковый BIGINT (unsigned) хранит значения от 0 до 18446744073709551615.

'bigint'=>Array('byte'=>8, 'min'=>-9223372036854775808, 'max'=>9223372036854775807, 'umin'=>0, 'umax'=>18446744073709551615)

TINYINT


Тип поля TINYINT использует 1 байт для хранения значения. Минимальное значение -128, максимальное 127. Беззнаковый TINYINT (unsigned) хранит значения от 0 до 255.

'tinyint'=>Array('byte'=>1, 'min'=>-128, 'max'=>127, 'umin'=>0, 'umax'=>255)

SMALLINT


Тип поля SMALLINT использует 1 байт для хранения значения. Минимальное значение -128, максимальное 127. Беззнаковый SMALLINT (unsigned) хранит значения от 0 до 255.

'smallint'=>Array('byte'=>2, 'min'=>-32768, 'max'=>32767, 'umin'=>0, 'umax'=>65535)

MEDIUMINT


Тип поля MEDIUMINT использует 3 байта для хранения значения. Минимальное значение -8388608, максимальное 8388607. Беззнаковый MEDIUMINT (unsigned) хранит значения от 0 до 16777215.

'mediumint'=>Array('byte'=>3, 'min'=>-8388608, 'max'=>8388607, 'umin'=>0, 'umax'=>16777215),

Десятичные

DECIMAL


DECIMAL DECIMAL(M, D) m — кол-во цифр (max 65 цифр), d — сколько из них могут быть после запятой
min_byte/max_byte — краевые значения размера поля в байтах,
byte_formula — формула вычисления размерности
length — максимальное кол-во цифр

Тип поля DECIMAL, DEC, NUMERIC используют от 2 до 67 байтов для хранения значения.

'decimal'=>Array('min_byte'=>2, 'max_byte'=>67, 'byte_formula'=>'(D==0?(M+1):(M+2)', 'length'=>65)
   'dec'=>Array('min_byte'=>2, 'max_byte'=>67, 'byte_formula'=>'D==0?(M+1):(M+2)', 'length'=>65)
   'numeric'=>Array('min_byte'=>2, 'max_byte'=>67, 'byte_formula'=>'D==0?(M+1):(M+2)', 'length'=>65)

FLOAT


byte — кол-во байт для хранения поля (по-умолчанию)
max_byte — максимальное кол-во байт для хранения
negative_min/negative_max — минмаксы для отрицательных чисел
positive_min/positive_max — минмаксы для положительных чисел
у FLOAT ТОЧНОСТЬ ТОЛЬКО 7 ЦИФР (все остальные цифры «смазываются»)

Тип поля FLOAT использует от 4 до 8 байтов для хранения значения. Минимальное значение для отрицательных чисел -3.402823466E+38, максимальное – -1.175494351E-38. Минимальное значение для положительных чисел 1.175494351E-38, максимальное – 3.402823466E+38.

'float'=>Array('byte'=>4, 'max_byte'=>8, 'negative_min'=>-3.402823466E+38, 'negative_max'=>-1.175494351E-38, 'positive_min'=>1.175494351E-38, 'positive_max'=>3.402823466E+38)

DOUBLE


byte — кол-во байт для хранения поля (по-умолчанию)
max_byte — максимальное кол-во байт для хранения
negative_min/negative_max — минмаксы для отрицательных чисел
positive_min/positive_max — минмаксы для положительных чисел
у DOUBLE ТОЧНОСТЬ ТОЛЬКО 15 ЦИФР (все остальные цифры «смазываются»)

Тип поля DOUBLE использует 8 байтов для хранения значения. Минимальное значение для отрицательных чисел -1.7976931348623157E+308, максимальное – -2.2250738585072014E-308. Минимальное значение для положительных чисел 2.2250738585072014E-308, максимальное – 1.7976931348623157E+308.

'double'=>Array('byte'=>8, 'negative_min'=>-1.7976931348623157E+308, 'negative_max'=>-2.2250738585072014E-308, 'positive_min'=>2.2250738585072014E-308, 'positive_max'=>1.7976931348623157E+308)


Внимание!
Не храните денежные значения в этих полях! Деньги надо хранить — в DECIMAL

Логический тип

BOOLEAN


Тип поля BOOL(BOOLEAN) использует 1 байт для хранения значения. true соответствует 1, false соответствует 0.

'bool'=>Array('byte'=>1, 'true'=>1, 'false'=>0),
'boolean'=>Array('byte'=>1, 'true'=>1, 'false'=>0),

Символьные типы данных

VARCHAR


byte — кол-во байт отведенных для хранения (можно задать меньше)
min_byte — минимальное кол-во байт в которых может храниться поле (если длина равна 1)
В MYSQL 5.0.3 и выше, VARCHAR может быть до 65,535 символов!
length — максимальная длина символов в поле

Тип поля VARCHAR, CHAR использует 256 байтов для хранения значения. Минимально – 2 байта. Максимальная длина символов в поле – 255.

'varchar'=>Array('byte'=>256, 'min_byte'=>2, 'length'=>255),
'char'=>Array('byte'=>256, 'min_byte'=>2, 'length'=>255),

BLOB


Тип данных BLOB представляет собой двоичный объект большого размера, который может содержать переменное количество данных. Существуют 4 модификации этого типа – TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB, отличающиеся только максимальной длиной хранимых величин.

byte — кол-во байт для хранения поля
min_byte — минимальное кол-во байт для хранения одного символа (если длина поля равна 1)
length — максимальное количество символов в поле

Тип поля TINYBLOB использует от 2 до 256 байтов для хранения значения. Максимальное количество символов в поле – 255.

'tinyblob'=>Array('byte'=>256, 'min_byte'=>2, 'length'=>255)


Тип поля BLOB использует от 3 до 65537 байтов для хранения значения. Максимальное количество символов в поле – 65535.

'blob'=>Array('byte'=>65537, 'min_byte'=>3, 'length'=>65535)


Тип поля MEDIUMBLOB использует от 4 до 16777219 байтов для хранения значения. Максимальное количество символов в поле – 16777215.

'mediumblob'=>Array('byte'=>16777219, 'min_byte'=>4, 'length'=>16777215)


Тип поля LONGBLOB использует от 5 до 4294967300 байтов для хранения значения. Максимальное количество символов в поле – 4294967296.

'longblob'=>Array('byte'=>4294967300, 'min_byte'=>5, 'length'=>4294967296)

TEXT


Тип данных TEXT также имеет 4 модификации – TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT, соответствующие упомянутым четырем типам BLOB и имеющие те же максимальную длину и требования к объему памяти. Единственное различие между типами BLOB и TEXT состоит в том, что сортировка и сравнение данных выполняются с учетом регистра для величин BLOB и без учета регистра для величин TEXT. Другими словами, TEXT – это независимый от регистра BLOB.

byte — кол-во байт для хранения поля
min_byte — минимальное кол-во байт для хранения одного символа (если длина поля равна 1)
length — максимальное количество символов в поле

Тип поля TINYTEXT использует от 2 до 256 байтов для хранения значения. Максимальное количество символов в поле – 255.

'tinytext'=>Array('byte'=>256, 'min_byte'=>2, 'length'=>255)


Тип поля TEXT использует от 3 до 65537 байтов для хранения значения. Максимальное количество символов в поле – 65535.

'text'=>Array('byte'=>65537, 'min_byte'=>3, 'length'=>65535)


Тип поля MEDIUMTEXT использует от 4 до 16777218 байтов для хранения значения. Максимальное количество символов в поле – 16777215.

'mediumtext'=>Array('byte'=>16777218, 'min_byte'=>4, 'length'=>16777215)


Тип поля LONGTEXT использует от 5 до 4294967300 байтов для хранения значения. Максимальное количество символов в поле – 4294967296.

'longtext'=>Array('byte'=>4294967300, 'min_byte'=>5, 'length'=>4294967296),

ENUM


ENUM (перечисление) – это столбец, который может принимать значение из списка допустимых значений, явно перечисленных в спецификации столбца в момент создания таблицы.

byte — кол-во байт на хранение поля
max_byte — максимальное кол-во байт, которое можно достигнуть при максимальном кол-ве элементов
max_number_of_element — кол-во элементов, которое может содержать поле

Тип поля ENUM использует от 1 до 2 байтов для хранения значения. Количество элементов, которое может содержать поле – 65535.

'enum'=>Array('byte'=>1, 'max_byte'=>2, 'max_number_of_element'=>65535)

SET


SET – это строковый тип, который может принимать ноль или более значений, каждое из которых должно быть выбрано из списка допустимых значений, определенных при создании таблицы. Элементы множества SET разделяются запятыми. Как следствие, сами элементы множества не могут содержать запятых.

byte — кол-во байт на хранение поля
max_byte — максимальное кол-во байт, которое можно достигнуть при максимальном кол-ве элементов
max_number_of_element — кол-во элементов, которое может содержать поле

Тип поля SET использует от 1 до 8 байт для хранения значения. Количество элементов, которое может содержать поле – 64.

'set'=>Array('byte'=>1, 'max_byte'=>8, 'max_number_of_element'=>64)

Тип данных даты и времени


byte — кол-во байт для хранения значения поля
mask — стандартная маска ввода значения
min/max — минимальные максимальные значения дат которые сохраняют поля

DATETIME


Тип данных DATETIME используется для величин, содержащих информацию как о дате, так и о времени. MySQL извлекает и выводит величины DATETIME в формате 'YYYY-MM-DD HH:MM:SS'. Поддерживается диапазон величин от '1000–01–01 00:00:00' до '9999–12–31 23:59:59'. («поддерживается» означает, что хотя величины с более ранними временными значениями, возможно, тоже будут работать, но нет гарантии того, что они будут правильно храниться и отображаться).

'datetime'=>Array('byte'=>8, 'mask'=>'YYYY-MM-DD HH: MM: SS', 'min'=>'1000-01-01 00:00:00', 'max'=>'9999-12-31 23:59:59')

DATE


Тип DATE используется для величин с информацией только о дате, без части, содержащей время. MySQL извлекает и выводит величины DATE в формате 'YYYY-MM-DD'. Поддерживается диапазон величин от '1000–01–01' до '9999–12–31'.

'date'=>Array('byte'=>3, 'mask'=>'YYYY-MM-DD', 'min'=>'1000-01-01', 'max'=>'9999-12-31')

TIMESTAMP


Тип столбца TIMESTAMP обеспечивает тип представления данных, который можно использовать для автоматической записи текущих даты и времени при выполнении операций INSERT или UPDATE. При наличии нескольких столбцов типа TIMESTAMP только первый из них обновляется автоматически.

'timestamp'=>Array('byte'=>4, 'mask'=>Array(14=>'YYYYMMDDHHMMSS',12=>'YYMMDDHHMMSS',10=>'YYMMDDHHMM',8=>'YYYYMMDD',6=>'YYMMDD',4=>'YYMM',2=>'YY'), 'min'=>1970, 'max'=>2036 )

TIME


MySQL извлекает и выводит величины типа TIME в формате 'HH:MM:SS' (или в формате 'HHH:MM:SS' для больших значений часов). Величины TIME могут изменяться в пределах от '-838:59:59' до '838:59:59'.

'time'=>Array('byte'=>3, 'min'=>'-838:59:59', 'max'=>'838:59:59')

YEAR


Тип YEAR – это однобайтный тип данных для представления значений года.

MySQL извлекает и выводит величины YEAR в формате YYYY. Диапазон возможных значений – от 1901 до 2155.

'year'=>Array('byte'=>1, 'min'=>1901, 'max'=>2155)