1. Главная страница » Компьютеры » Mysql workbench типы данных

Mysql workbench типы данных

Автор: | 16.12.2019

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

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 и 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 * 10 38 до 3.4028 * 10 38 , занимает 4 байта

Может принимать форму FLOAT(M,D) , где M — общее количество цифр, а D — количество цифр после запятой

DOUBLE : хранит дробные числа с плавающей точкой двойной точности от -1.7976 * 10 308 до 1.7976 * 10 308 , занимает 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 байт

Читайте также:  Gpio alarm armed что это

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". Некоторые из принимаемых форматов:

В таком формате двузначные числа от 00 до 69 воспринимаются как даты в диапазоне 2000-2069. А числа от 70 до 99 как диапазон чисел 1970 — 1999.

Для времени тип Time использует 24-часовой формат. Он может принимать время в различных форматах:

hh:mi — 3:21 (хранимое значение 03:21:00 )

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

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

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

ENUM : хранит одно значение из списка допустимых значений. Занимает 1-2 байта

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

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

TINYBLOB : хранит бинарные данные в виде строки длиной до 255 байт.

BLOB : хранит бинарные данные в виде строки длиной до 65 КБ.

MEDIUMBLOB : хранит бинарные данные в виде строки длиной до 16 МБ

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

MySQL поддерживает несколько типов столбцов, которые можно разделить на три категории: числовые типы данных, типы данных для хранения даты и времени и символьные (строковые) типы данных. В данном разделе вначале дается обзор всех возможных типов и приводятся требования по хранению для каждого типа столбца, затем свойства типов описываются более подробно по каждой категории. Мы намеренно сделали обзор кратким, поскольку более детальные описания требуют дополнительной информации о конкретных типах столбцов, например, о допустимых форматах представления величин.

Ниже перечислены типы столбцов, поддерживаемые MySQL. В описаниях используются следующие обозначения:

Указывает максимальный размер вывода. Максимально допустимый размер вывода составляет 255 символов.

Употребляется для типов данных с плавающей точкой и указывает количество разрядов, следующих за десятичной точкой. Максимально возможная величина составляет 30 разрядов, но не может быть больше, чем M -2.

Квадратные скобки (‘ [ ‘ и ‘ ] ‘) указывают для типа данных группы необязательных признаков.

Заметьте, что если для столбца указать параметр ZEROFILL , то MySQL будет автоматически добавлять в этот столбец атрибут UNSIGNED .

Предупреждение: следует помнить, что при выполнении вычитания между числовыми величинами, одна из которых относится к типу UNSIGNED , результат будет беззнаковым! See Раздел 6.3.5, «Функции приведения типов».

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

Очень малое целое число. Диапазон со знаком от -128 до 127 . Диапазон без знака от 0 до 255 .

Являются синонимами для TINYINT(1) .

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

Малое целое число. Диапазон со знаком от -32768 до 32767 . Диапазон без знака от 0 до 65535 .

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

Целое число среднего размера. Диапазон со знаком от -8388608 до 8388607 . Диапазон без знака от 0 до 16777215 .

INT[(M)] [UNSIGNED] [ZEROFILL]

Целое число нормального размера. Диапазон со знаком от -2147483648 до 2147483647 . Диапазон без знака от 0 до 4294967295 .

INTEGER[(M)] [UNSIGNED] [ZEROFILL]

Синоним для INT .

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

Большое целое число. Диапазон со знаком от -9223372036854775808 до 9223372036854775807 . Диапазон без знака от 0 до 18446744073709551615 . Для столбцов типа BIGINT необходимо учитывать некоторые особенности:

Все арифметические операции выполняются с использованием значений BIGINT или DOUBLE со знаком, так что не следует использовать беззнаковые целые числа больше чем 9223372036854775807 (63 бита), кроме операций, выполняемых логическими функциями. В противном случае несколько последних разрядов результата могут оказаться ошибочными из-за ошибок округления при преобразовании BIGINT в DOUBLE . MySQL 4.0 может обрабатывать данные типа BIGINT в следующих случаях:

Использование целых чисел для хранения больших беззнаковых величин в столбце с типом BIGINT .

В случаях MIN(big_int_column) и MAX(big_int_column) .

При использовании операторов (‘ + ‘, ‘ — ‘, ‘ * ‘ и т.д.), когда оба операнда являются целыми числами.

Точное значение целого числа всегда можно хранить в столбце с типом BIGINT в виде строки. В этом случае MySQL выполнит преобразование строки в число без промежуточного преобразования.

Если оба аргумента являются целочисленными величинами, то при выполнении над ними операций ‘ — ‘, ‘ + ‘, и ‘ * ‘ будут использоваться правила BIGINT -арифметики. Это означает, что при умножении двух больших целых чисел (или результатов вычислений функций, возвращающих целые числа) результат операции может оказаться непредсказуемым, если он превосходит значение 9223372036854775807 .

Читайте также:  Cortex m3 руководство по программированию

FLOAT(точность) [UNSIGNED] [ZEROFILL]

Число с плавающей точкой. Атрибут точности может иметь значение для числа с плавающей точкой обычной (одинарной) точности и между 25 и 53 — для числа с плавающей точкой удвоенной точности. Эти типы данных сходны с типами FLOAT и DOUBLE , описанными ниже. FLOAT(X) относится к тому же интервалу, что и соответствующие типы FLOAT и DOUBLE , но диапазон значений и количество десятичных знаков не определены.

В версии MySQL 3.23 это истинная величина числа с плавающей точкой. В более ранних версиях MySQL тип данных FLOAT(точность) всегда имеет два десятичных знака.

Следует отметить, что использование типа данных FLOAT может привести к неожиданным проблемам, так как все вычисления в MySQL выполняются с удвоенной точностью. See Раздел A.5.6, «Решение проблем с отсутствием строк, удовлетворяющих условиям поиска». Данный синтаксис обеспечивает совместимость с ODBC.

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

Малое число с плавающей точкой обычной точности. Допустимые значения: от -3,402823466E+38 до -1,175494351E-38 , 0 , и от 1,175494351E-38 до 3,402823466E+38 . Если указан атрибут UNSIGNED , отрицательные значения недопустимы. Атрибут M указывает количество выводимых пользователю знаков, а атрибут D — количество разрядов, следующих за десятичной точкой. Обозначение FLOAT без указания аргументов или запись вида FLOAT(X) , где X справедливы для числа с плавающей точкой обычной точности.

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

Число с плавающей точкой удвоенной точности нормального размера. Допустимые значения: от -1,7976931348623157E+308 до -2,2250738585072014E-308 , 0 , и от 2,2250738585072014E-308 до 1,7976931348623157E+308 . Если указан атрибут UNSIGNED , отрицательные значения недопустимы. Атрибут M указывает количество выводимых пользователю знаков, а атрибут D — количество разрядов, следующих за десятичной точкой. Обозначение DOUBLE без указания аргументов или запись вида FLOAT(X) , где 25 справедливы для числа с плавающей точкой двойной точности.

DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL] , REAL[(M,D)] [UNSIGNED] [ZEROFILL]

Данные обозначения являются синонимами для DOUBLE .

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

«Неупакованное» число с плавающей точкой. Ведет себя подобно столбцу CHAR , содержащему цифровое значение. Термин «неупакованное» означает, что число хранится в виде строки и при этом для каждого десятичного знака используется один символ. Разделительный знак десятичных разрядов, а также знак ‘ — ‘ для отрицательных чисел не учитываются в M (но место для них зарезервировано). Если атрибут D равен 0 , величины будут представлены без десятичного знака, т.е. без дробной части. Максимальный интервал значений типа DECIMAL тот же, что и для типа DOUBLE , но действительный интервал для конкретного столбца DECIMAL может быть ограничен выбором значений атрибутов M и D . Если указан атрибут UNSIGNED , отрицательные значения недопустимы. Если атрибут D не указан, его значение по умолчанию равно 0 . Если не указан M , его значение по умолчанию равно 10 . В более ранних, чем MySQL 3.23, версиях аргумент M должен содержать в себе место для знака числа и десятичного знака.

DEC[(M[,D])] [UNSIGNED] [ZEROFILL] , NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]

Данные обозначения являются синонимами для DECIMAL .

Дата. Поддерживается интервал от ‘1000-01-01’ до ‘9999-12-31’ . MySQL выводит значения DATE в формате ‘YYYY-MM-DD’ , но можно установить значения в столбец DATE , используя как строки, так и числа. See Раздел 6.2.2.2, «Типы данных DATETIME , DATE и TIMESTAMP ».

Комбинация даты и времени. Поддерживается интервал от ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’ . MySQL выводит значения DATETIME в формате ‘YYYY-MM-DD HH:MM:SS’ , но можно устанавливать значения в столбце DATETIME , используя как строки, так и числа. See Раздел 6.2.2.2, «Типы данных DATETIME , DATE и TIMESTAMP ».

Временная метка. Интервал от ‘1970-01-01 00:00:00’ до некоторого значения времени в 2037 году. MySQL выводит значения TIMESTAMP в форматах YYYYMMDDHHMMSS , YYMMDDHHMMSS , YYYYMMDD или YYMMDD в зависимости от значений M : 14 (или отсутствующее), 12 , 8 , или 6 ; но можно также устанавливать значения в столбце TIMESTAMP , используя как строки, так и числа. Столбец TIMESTAMP полезен для записи даты и времени при выполнении операций INSERT или UPDATE , так как при этом автоматически вносятся значения даты и времени самой последней операции, если эти величины не введены программой. Можно также устанавливать текущее значение даты и времени, задавая значение NULL . See Раздел 6.2.2, «Типы данных даты и времени». Аргумент M влияет только на способ вывода столбца TIMESTAMP ; для хранения его значений всегда используется 4 байта. Следует учитывать, что столбцы TIMESTAMP(M) , где M равно 8 или 14 , представляют собой числа, в то время, как столбцы TIMESTAMP(M) с иным значением аргумента M являются строками. Это убеждает, что можно надежно сделать дамп и восстановить таблицу с этими типами столбцов! See Раздел 6.2.2.2, «Типы данных DATETIME , DATE и TIMESTAMP ».

Время. Интервал от ‘-838:59:59’ до ‘838:59:59’ . MySQL выводит значения TIME в формате ‘HH:MM:SS’ , но можно устанавливать значения в столбце TIME , используя как строки, так и числа. See Раздел 6.2.2.3, «Тип данных TIME ».

Читайте также:  Acer aspire 5520g windows 7

Год в двухзначном или четырехзначном форматах (по умолчанию формат четырехзначный). Допустимы следующие значения: с 1901 по 2155 , 0000 для четырехзначного формата года и 1970-2069 при использовании двухзначного формата ( 70-69 ). MySQL выводит значения YEAR в формате YYYY , но можно задавать значения в столбце YEAR , используя как строки, так и числа (тип данных YEAR недоступен в версиях, предшествующих MySQL 3.22). See Раздел 6.2.2.4, «Тип данных YEAR ».

[NATIONAL] CHAR(M) [BINARY]

Строка фиксированной длины, при хранении всегда дополняется пробелами в конце строки до заданного размера. Диапазон аргумента M составляет от 0 до 255 символов (от 1 до 255 в версиях, предшествующих MySQL 3.23). Концевые пробелы удаляются при выводе значения. Если не задан атрибут чувствительности к регистру BINARY , то величины CHAR сортируются и сравниваются как независимые от регистра в соответствии с установленным по умолчанию алфавитом.

Атрибут NATIONAL CHAR (или его эквивалентная краткая форма NCHAR ) представляет собой принятый в ANSI SQL способ указания, что в столбце CHAR должен использоваться установленный по умолчанию набор символов ( CHARACTER ). В MySQL это принято по умолчанию. CHAR является сокращением от CHARACTER . MySQL позволяет создавать столбец типа CHAR(0) .

В основном это полезно, если необходимо обеспечить совместимость с некоторыми старыми приложениями, которые зависят от наличия столбца, но реально эту величину не используют. Кроме того, такая возможность может очень пригодиться в случае, если необходим столбец, который может содержать только 2 значения, а именно CHAR(0) (т.е. столбец, который не определен как NOT NULL , занимает только один бит и принимает только 2 значения: NULL или "" ). See Раздел 6.2.3.1, «Типы данных CHAR и VARCHAR».

Это синоним для CHAR(1) .

[NATIONAL] VARCHAR(M) [BINARY]

Строка переменной длины. Примечание: концевые пробелы удаляются при сохранении значения (в этом заключается отличие от спецификации ANSI SQL). Диапазон аргумента M составляет от 0 до 255 символов (от 1 до 255 в версиях, предшествующих MySQL Version 4.0.2). Если не задан атрибут чувствительности к регистру BINARY , то величины VARCHAR сортируются и сравниваются как независимые от регистра. See Раздел 6.5.3.1, «Молчаливые изменения определений столбцов». Термин VARCHAR является сокращением от CHARACTER VARYING . See Раздел 6.2.3.1, «Типы данных CHAR и VARCHAR».

Столбец типа BLOB или TEXT с максимальной длиной 4294967295 ( 2^32 — 1 ) символов. See Раздел 6.5.3.1, «Молчаливые изменения определений столбцов». Следует учитывать, что в настоящее время протокол передачи данных сервер/клиент и таблицы MyISAM имеют ограничение 16 Мб на передаваемый пакет/строку таблицы, поэтому пока нельзя использовать этот тип данных в его полном диапазоне. See Раздел 6.2.3.2, «Типы данных BLOB и TEXT ».

Перечисление. Перечисляемый тип данных. Объект строки может иметь только одно значение, выбранное из заданного списка величин ‘значение1’ , ‘значение2’ , . , NULL или специальная величина ошибки "" . Список ENUM может содержать максимум 65535 различных величин. See Раздел 6.2.3.3, «Тип перечисления ENUM ».

Набор. Объект строки может иметь ноль или более значений, каждое из которых должно быть выбрано из заданного списка величин ‘значение1’ , ‘значение2’ , . Список SET может содержать максимум 64 элемента. See Раздел 6.2.3.4, «Тип множества SET ».

В MySQL как и во многих языках программирования данные строго типизированы. Типизация данных помогает в организации и повышении оптимизации таблиц в базах данных MySQL.

В MySQL всего четыре группы типов данных:

Далее рассмотрим подробно каждый тип данных в MySQL.

Числовые типы данных в MySQL

Целое число от -2,147,483,648 до 2,147,483,647

Десятичное число от -3.402823466E+38 до -1.175494351E-38, 0 и от 1.175494351E-38 до 3.402823466E+38, где M — количество выводимых цифр в числе (

Понравилась статья? Расскажите о ней друзьям!

Тип данных Размер Определение
INT(Size) 4 байта
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 байта

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *