В MySQL как и во многих языках программирования данные строго типизированы. Типизация данных помогает в организации и повышении оптимизации таблиц в базах данных MySQL.
В MySQL всего четыре группы типов данных:
- Числовые
- Строковые
- Комплексные
- Временные
Далее рассмотрим подробно каждый тип данных в MySQL.
Числовые типы данных в MySQL
Тип данных | Размер | Определение |
---|---|---|
INT(Size) | 4 байта |
Целое число от -2,147,483,648 до 2,147,483,647 |
INT UNSIGNED(Size) | 4 байта | Целое число от 0 до 4,294,967,295 |
INTEGER(Size) | 4 байта | Синоним для INT |
TINYINT(Size) | 1 байт | Целое число от -128 до 127 |
TINYINT UNSIGNED(Size) | 1 байт | Целое число от 0 до 256 |
SMALLINT(Size) | 2 байта | Целое число от -32,768 до 32,767 |
SMALLINT UNSIGNED(Size) | 2 байта | Целое число от 0 до 465,535 |
MEDIUMINT(Size) | 3 байта | Целое число от -8,388,608 до 8,388,607 |
MEDIUMINT UNSIGNED(Size) | 3 байта | Целое число от 0 до 16777215 |
BIGINT(Size) | 8 байт | Целое число от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
BIGINT UNSIGNED(Size) | 8 байт | Целое число от 0 до 18,446,744,073,709,551,615 |
FLOAT(M,D) | 4 байта |
Десятичное число от -3.402823466E+38 до -1.175494351E-38, 0 и от 1.175494351E-38 до 3.402823466E+38, где M - количество выводимых цифр в числе (<=25), D - количество цифр после точки. М и D - не обязательны. По умолчанию M=10, D=2. Пример: для FLOAT(5,2) промежуток допустимых значений будет от-999.99 до 999,99. |
FLOAT(M,D) UNSIGNED | 4 байта | Тоже что и FLOAT только без отрицательных значений |
DOUBLE(M,D) | 8 байт |
Десятичное число от -1.7976931348623157E+308 до -2.2250738585072014E-308, 0, и от 2.2250738585072014E-308 до 1.7976931348623157E+308, где M - количество выводимых цифр в числе (25 <= M <= 53), D - количество цифр после точки. М и D - не обязательны. По умолчанию M=16, D=4. Пример: для DOUBLE(5,2) промежуток допустимых значений будет от-999.99 до 999,99. |
DOUBLE(M,D) UNSIGNED | 8 байт | Тоже что и DOUBLE, только не допускает отрицательные значения |
REAL(M,D) |
8 байт | Синоним для DOUBLE |
DECIMAL(M,D) | зависит от количества цифр | Тоже что и DOUBLE, только число хранится в виде строки. По умолчанию M=10, D=0. |
DECIMAL(M,D) UNSIGNED | 8 байт | Тоже что и DECIMAL, только не допускает отрицательные значения |
DEC(M,D) NUMERIC(M,D) |
8 байт | Синонимы для DECIMAL |
Строковые типы данных в MySQL
Тип данных | Размер | Определение |
---|---|---|
CHAR(Size) | Зависит от кодировки | Строка неизменяемой длины. Длина строки (Size) от 0 до 255 |
CHARACTER(Size) | Зависит от кодировки | Синоним для CHAR |
BINARY(Size) | 0-255 байт | Версия CHAR для хранения бинарных данных |
VARCHAR(Size) | Зависит от кодировки | Строка переменной длины. Длина строки (Size) от 0 до 65,532 (0-255 для версий ниже MySQL 5). Если значение будет большее 65,532 (255), то оно сконвертируется в тип TEXT |
CHARACTER VARYING(Size) | Зависит от кодировки | Синоним для VARCHAR |
VARBINARY(Size) | 0-65,532 байт | Версия VARCHAR для хранения бинарных данных. |
TEXT | Длина строки + 2 байта | Строка с максимальной длинной в 65,535 символов |
TINYTEXT | Длина строки + 1 байт | Строка с максимальной длинной в 255 символов |
MEDIUMTEXT | Длина строки + 3 байта | Строка с максимальной длинной в 16,777,215 символов |
LONGTEXT | Длина строки + 4 байта | Строка с максимальной длинной в 4,294,967,295 символов |
BLOB | 0-65,535 байт | Binary Large OBjects. Может хранить до 65,535 байт бинарных данных (например картинки). Также используется наравне с TEXT для хранения текста. |
TINYBLOB | 0-255 байт | Binary Large OBjects. Может хранить до 255 байт бинарных данных (например картинки). Также используется наравне с TINYTEXT для хранения текста. |
MEDIUMBLOB | 0-16,777,215 байт | Binary Large OBjects. Может хранить до 16,777,215 байт бинарных данных (например картинки). Также используется наравне с MEDIUMTEXT для хранения текста. |
LONGBLOB | 0-4,294,967,295 байт | Binary Large OBjects. Может хранить до 4,294,967,295 байт бинарных данных (например картинки). Также используется наравне с LONGTEXT для хранения текста. |
Комплексные типы данных в MySQL
Тип данных | Размер | Определение |
---|---|---|
ENUM(a,b,c,...,n) |
1-255 значений: 256-65,535 значений: |
Список. Максимальное количество значений в списке - 65,535. Поле может принимать только одно значение из списка. При неверном значении оставляет поле пустым. Пример поля: Gender ENUM("male","female"). |
SET(a,b,c,...,n) |
1-8 значений: 9-16 значений: 17-24 значений: 25-32 значений: 33-64 значений: |
Список. Похож на ENUM, но поле может принимать несколько значений из списка. Максимальное количество значений в списке - 64. Пример поля: Fruits SET("orange","apple","kiwi"). |
Временные типы данных в MySQL
Тип данных | Размер | Определение |
---|---|---|
DATE | 3 байта | Дата. Формат - YYYY-MM-DD. Допустимое значение от 1000-01-01 до 9999-12-31 |
DATETIME | 8 байт | Дата и время. Формат - YYYY-MM-DD HH:MM:SS. Допустимое значение от 1000-01-01 00:00:00 до 9999-12-31 23:59:59 |
TIMESTAMP | 4 байт | Дата и время. Реагирует на изменения таблицы, устанавливает дату и время последнего изменения таблицы. Формат - YYYYMMDD HHMMSS. Допустимое значение от 1970-01-01 00:00:01 до 2038-01-09 03:14:07 |
TIME | 3 байт | Время. Формат - HH:MM:SS. Допустимое значение от 00:00:00 до 23:59:59 |
YEAR(Size) | 1 байт | Год. Формат - YYYY или YY. Допустимое значение от 1901 до 2155 или от 70 до 69 (1970 - 2069) |