Типы данных MySQL

Поділитись

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

MySQL предоставляет следующие типы данных, которые можно разбить на ряд групп.

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

  • CHAR: представляет стоку фиксированной длины.Длина хранимой строки указыватся в скобках, например, CHAR(10) – строка из десяти символов. И если в таблицу в данный столбец сохраняется строка из 6 символов (то есть меньше установленной длины в 10 символов), то строка дополняется 4 проблеми и в итоге все равно будет занимать 10 символов
  • VARCHAR: представляет стоку переменной длины.Длина хранимой строки также указыватся в скобках, например, VARCHAR(10). Однако в отличие от CHAR хранимая строка будет занимать именно столько места, скольо необходимо. Например, если определеная длина в 10 символов, но в столбец сохраняется строка в 6 символов, то хранимая строка так и будет занимать 6 символов плюс дополнительный байт, который хранит длину строки.

Начиная с MySQL 5.6 типы CHAR и VARCHAR по умолчанию используют кодировку UTF-8, которая позволяет использовать до 3 байт для хранения символа в заивисимости от языка ( для многих европейских языков по 1 байту на символ, для ряда восточно-европейских и ближневосточных – 2 байта, а для китайского, яполнского, корейского – по 3 байта на символ).

Ряд дополнительных типов данных представляют текст неопределенной длины:

  • TINYTEXT: представляет текст длиной до 255 байт.
  • TEXT: представляет текст длиной до 65 КБ.
  • MEDIUMTEXT: представляет текст длиной до 16 МБ
  • LARGETEXT: представляет текст длиной до 4 ГБ

Числовые типы

  • TINYINT: представляет целые числа от -127 до 128, занимает 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: представляет целые числа от -2147483648 до 2147483647, занимает 4 байта
  • 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 и scaleDECIMAL(precision, scale).Параметр precision представляет максимальное количество цифр, которые может хранить число. Это значение должно находиться в диапазоне от 1 до 65.Параметр scale представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0.Например, в определении следующего столбца:1salary DECIMAL(5,2)Число 5 – precision, а число 2 – scale, поэтому данный столбец может хранить значения из диапазона от -999.99 до 999.99.Размер данных в байтах для DECIMAL зависит от хранимого значения.Данный тип также имеет псевдонимы NUMERICDECFIXED.
  • FLOAT: хранит дробные числа с плавающей точкой одинарной точности от -3.4028 * 1038 до 3.4028 * 1038, занимает 4 байтаМожет принимать форму FLOAT(M,D), где M – общее количество цифр, а D – количество цифр после запятой.
  • DOUBLE: хранит дробные числа с плавающей точкой двойной точности от -1.7976 * 10308 до 1.7976 * 10308, занимает 8 байт. Также может принимать форму DOUBLE(M,D), где M – общее количество цифр, а D – количество цифр после запятой.Данный тип также имеет псевдонимы REAL и DOUBLE PRECISION, которые можно использовать вместо DOUBLE.

Типы для работы с датой и временем

  • DATE: хранит даты с 1 января 1000 года до 31 деабря 9999 года (c “1000-01-01” до “9999-12-31”). По умолчанию для хранения используется формат yyyy-mm-dd. Занимает 3 байта.
  • TIME: хранит время от -838:59:59 до 838:59:59. По умолчанию для хранения времени применяется формат “hh:mm:ss”. Занимает 3 байта.
  • DATETIME: объединяет время и дату, диапазон дат и времени – с 1 января 1000 года по 31 декабря 9999 года (с “1000-01-01 00:00:00” до “9999-12-31 23:59:59”). Для хранения по умолчанию используется формат “yyyy-mm-dd hh:mm:ss”. Занимает 8 байт
  • TIMESTAMP: также хранит дату и время, но в другом диапазоне: от “1970-01-01 00:00:01” UTC до “2038-01-19 03:14:07” UTC. Занимает 4 байта
  • YEAR: хранит год в виде 4 цифр. Диапазон доступных значений от 1901 до 2155. Занимает 1 байт.

Тип 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 использует 24-часовой формат. Он может принимать время в различных форматах:

  • hh:mi – 3:21 (хранимое значение 03:21:00)
  • hh:mi:ss – 19:21:34
  • hhmiss – 192134

Примеры значений для типов DATETIME и TIMESTAMP:

  • 2018-05-25 19:21:34
  • 2018-05-25 (хранимое значение 2018-05-25 00:00:00)

Составные типы

  • ENUM: хранит одно значение из списка допустимых значений. Занимает 1-2 байта
  • SET: может хранить несколько значений (до 64 значений) из некоторого списка допустимых значений. Занимает 1-8 байт.

Бинарные типы

  • TINYBLOB: хранит бинарные данные в виде строки длиной до 255 байт.
  • BLOB: хранит бинарные данные в виде строки длиной до 65 КБ.
  • MEDIUMBLOB: хранит бинарные данные в виде строки длиной до 16 МБ
  • LARGEBLOB: хранит бинарные данные в виде строки длиной до 4 ГБ

Поділитись