Типы данных MySQL

Последнее обновление: 25.05.2018

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

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

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

  • CHAR: представляет строку фиксированной длины.

    Длина хранимой строки указывается в скобках, например, CHAR(10) - строка из десяти символов. И если в таблицу в данный столбец сохраняется строка из 6 символов (то есть меньше установленной длины в 10 символов), то строка дополняется 4 пробелами и в итоге все равно будет занимать 10 символов

    Тип CHAR может хранить до 255 байт.

  • VARCHAR: представляет строку переменной длины.

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

    Всего тип VARCHAR может хранить до 65535 байт.

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

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

  • TINYTEXT: представляет текст длиной до 255 байт.

  • TEXT: представляет текст длиной до 65 КБ.

  • MEDIUMTEXT: представляет текст длиной до 16 МБ

  • LONGTEXT: представляет текст длиной до 4 ГБ

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

  • 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: представляет целые числа от -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 и scale: DECIMAL(precision, scale).

    Параметр precision представляет максимальное количество цифр, которые может хранить число. Это значение должно находиться в диапазоне от 1 до 65.

    Параметр scale представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0.

    Например, в определении следующего столбца:

    salary DECIMAL(5,2)

    Число 5 - precision, а число 2 - scale, поэтому данный столбец может хранить значения из диапазона от -999.99 до 999.99.

    Размер данных в байтах для DECIMAL зависит от хранимого значения.

    Данный тип также имеет псевдонимы NUMERIC, DEC, FIXED.

  • 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 МБ

  • LONGBLOB: хранит бинарные данные в виде строки длиной до 4 ГБ

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850