Типы данных
При определении столбцов таблицы для них необходимо указать тип данных. Каждый столбец должен иметь тип данных. Тип данных определяет, какие значения могут храниться в столбце, сколько они будут занимать места в памяти.
Символьные типы | |
---|---|
Значение |
Описание |
VARCHAR строка переменной длины |
Длина хранимой строки указыватся в скобках, например, VARCHAR(10) . Однако в
отличие от CHAR хранимая строка будет
занимать именно столько места, сколько необходимо. Например, если определенная длина в 10
символов, но в столбец
сохраняется строка в 6 символов, то хранимая строка так и будет занимать 6 символов плюс
дополнительный байт, который
хранит длину строки. Всего тип VARCHAR может хранить до 65535 байт.
Идеальный тип данных для паролей, логинов, заголовков статей, имени, фамилии и т.д. |
TEXT |
Представляет текст длиной до 65 КБ.
Идеальный тип данных для текста |
CHAR строка фиксированной длины |
Длина хранимой строки указывается в скобках, например, CHAR(10) - строка из десяти
символов. И если в таблицу в данный
столбец сохраняется строка из 6 символов (то есть меньше установленной длины в 10 символов), то
строка дополняется 4
пробелами и в итоге все равно будет занимать 10 символов. Тип CHAR может хранить до 255 байт
|
TINYTEXT |
Представляет текст длиной до 255 байт |
MEDIUMTEXT |
представляет текст длиной до 16 МБ |
LARGETEXT |
представляет текст длиной до 4 ГБ |
Числовые типы | |
Значение |
Описание |
INT |
Представляет целые числа от -2147483648 до 2147483647, занимает 4 байта. Идеальный тип данных для ID
|
TINYINT |
Представляет целые числа от -128 до 127, занимает 1 байт |
BOOL |
фактически не представляет отдельный тип, а является лишь псевдонимом для типа
TINYINT(1) и может хранить два значения 0
и 1. Однако данный тип может также в качестве значения принимать встроенные константы
TRUE (представляет число 1) и
FALSE (предоставляет число 0). Также имеет псевдоним BOOLEAN
|
TINYINT UNSIGNED |
Представляет целые числа от 0 до 255, занимает 1 байт |
SMALLINT |
Представляет целые числа от -32768 до 32767, занимает 2 байтa |
SMALLINT UNSIGNED |
Представляет целые числа от 0 до 65535, занимает 2 байтa |
MEDIUMINT |
Представляет целые числа от -8388608 до 8388607, занимает 3 байта |
MEDIUMINT UNSIGNED |
Представляет целые числа от 0 до 16777215, занимает 3 байта |
INT UNSIGNED |
Представляет целые числа от 0 до 4294967295, занимает 4 байта |
BIGINT |
Представляет целые числа от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, занимает 8 байт |
BIGINT UNSIGNED |
Представляет целые числа от 0 до 18 446 744 073 709 551 615, занимает 8 байт |
DECIMAL |
Хранит числа с фиксированной точностью. Данный тип может принимать два параметра
precision и scale : DECIMAL(precision, scale) .
Параметр precision представляет максимальное количество цифр, которые может хранить
число. Это значение должно находиться в диапазоне от 1 до 65. Параметр scale
представляет максимальное
количество цифр, которые может содержать число после запятой. Это значение
должно находиться в диапазоне от 0 до значения параметра precision . По умолчанию
оно равно 0. Например, в определении следующего столбца:
Число 5 - precision , а число 2 - scale , поэтому данный столбец может
хранить значения из диапазона от -999.99 до 999.99. Размер данных в байтах для
DECIMAL зависит от хранимого значения. Данный тип также имеет псевдонимы
NUMERIC, DEC, FIXED .
|
FLOAT |
Хранит дробные числа с плавающей точкой одинарной точности от -3.4028 * 1038 до 3.4028 * 1038, занимает 4 байта |
DOUBLE |
Хранит дробные числа с плавающей точкой двойной точности от -1.7976 * 10308 до 1.7976 * 10308,
занимает 8 байт. Также
может принимать форму DOUBLE(M,D) , где M - общее количество цифр, а
D - количество цифр после запятой. Данный тип также имеет псевдонимы
REAL и DOUBLE PRECISION , которые можно использовать вместо
DOUBLE .
|
Дата и время | |
Значение |
Описание |
DATETIME |
Объединяет время и дату, диапазон дат и времени - с 1 января 1000 года по 31 декабря 9999 года
(с "1000-01-01 00:00:00"
до "9999-12-31 23:59:59"). Для хранения по умолчанию используется формат
yyyy-mm-dd hh:mm:ss , занимает 8 байт.
Примеры значений для типов Datetime :
2018-05-25 19:21:34
2018-05-25 (хранимое значение 2018-05-25 00:00:00)
Идеальный тип данных для даты и времени |
DATE |
Хранит даты с 1 января 1000 года до 31 деабря 9999 года (c "1000-01-01" до "9999-12-31"). По
умолчанию для хранения
используется формат yyyy-mm-dd , занимает 3 байта.
Тип Date может принимать даты в различных форматах, однако непосредственно для
хранения в самой бд даты приводятся к
формату yyyy-mm-dd . Некоторые из принимаемых форматов:
yyyy-mm-dd - 2018-05-25
yyyy-m-dd - 2018-5-25
yy-m-dd - 18-05-25
В таком формате двузначные числа от 00 до 69 воспринимаются как даты в диапазоне 2000-2069. А числа от 70 до 99 как диапазон чисел 1970 - 1999. yyyymmdd - 20180525
yyyy.mm.dd - 2018.05.25
|
TIME |
Хранит время от -838:59:59 до 838:59:59. По умолчанию для хранения времени применяется формат
hh:mm:ss , занимает 3
байта
Для времени тип Time использует 24-часовой формат. Он может принимать время в
различных форматах:
hh:mi - 3:21 (хранимое значение 03:21:00)
hh:mi:ss - 19:21:34
hhmiss - 192134
|
TIMESTAMP |
Также хранит дату и время, но в другом диапазоне: от "1970-01-01 00:00:01" UTC до "2038-01-19
03:14:07" UTC, занимает 4
байта.
Примеры значений для типов Timestamp :
2018-05-25 19:21:34
2018-05-25 (хранимое значение 2018-05-25 00:00:00)
|
YEAR |
Хранит год в виде 4 цифр. Диапазон доступных значений от 1901 до 2155, занимает 1 байт |
Составные типы | |
Значение |
Описание |
ENUM |
Хранит одно значение из списка допустимых значений, занимает 1-2 байта |
SET |
Может хранить несколько значений (до 64 значений) из некоторого списка допустимых значений, занимает 1-8 байт |
Бинарные типы | |
Значение |
Описание |
TINYBLOB |
Хранит бинарные данные в виде строки длиной до 255 байт |
BLOB |
Хранит бинарные данные в виде строки длиной до 65 КБ |
MEDIUMBLOB |
Хранит бинарные данные в виде строки длиной до 16 МБ |
LARGEBLOB |
Хранит бинарные данные в виде строки длиной до 4 ГБ |