Атрибут unsigned mysql что это

Стандартные типы данных (MySQL)

Примечания

Числа

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.
DECIMAL эквивалентно DECIMAL(10,0).

Время

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

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

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

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

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

Символы

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 или «»).
CHAR эквивалентно CHAR(1).

VARCHAR(M)
Строка переменной длины. С версии 5.0.3 диапазон параметра M составляет от 0 до 65535 символов. Однако, нужно учесть, что это значение распределяется среди всех данных ряда, не считая BLOB и TEXT, которые идут отдельно. Для UTF-8 максимальная длина данных ряда будет приблизительно в три раза меньше, а именно: 21844.

Источник

Атрибут unsigned mysql что это

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

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

Квадратные скобки ( [ и ] ) указывают части спецификаторов типа, которые являются факультативными.

Типы NUMERIC и DECIMAL выполнены как тот же самый тип MySQL, как разрешено стандартом SQL92. Они используются для значений, для которых важно сохранить идеальную точность, например, с валютными данными. При объявлении столбца одного из этих типов точность и масштаб могут быть (и обычно бывают) определены, например:

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

Имеются некоторые общие вещи, которые стоит иметь в виду при работе с типами даты и времени:

MySQL непосредственно Y2K-безопасен, но вводимые значения таковыми не явдяются. Любой ввод, содержащий значения года с 2 цифрами, неоднозначен потому, что столетие неизвестно. Такие значения должны интерпретироваться в форму с 4 цифрами потому, что MySQL сохраняет годы, внутренне всегда используя четыре цифры.

Не забудьте, что эти правила обеспечивают только приемлемые предположения относительно того, что Ваши данные означают. Если логика, используемая MySQL, не производит правильные значения, Вы должны обеспечить однозначный ввод, содержащий значения года с 4 цифрами.

ORDER BY сортирует значения типов YEAR/DATE/DATETIME с 2 цифрами правильно.

Автоматическое модифицирование первого столбца TIMESTAMP происходит при любом из условий:

Значения TIMESTAMP имеют точность в одну секунду. Значения отображаются как числа.

Тип столбцаФормат отображения
TIMESTAMP(14)YYYYMMDDHHMMSS
TIMESTAMP(12)YYMMDDHHMMSS
TIMESTAMP(10)YYMMDDHHMM
TIMESTAMP(8)YYYYMMDD
TIMESTAMP(6)YYMMDD
TIMESTAMP(4)YYMM
TIMESTAMP(2)YY

Все столбцы типа TIMESTAMP имеют тот же самый размер памяти, независимо от размера отображения. Наиболее распространенные размеры: 6, 8, 12 и 14. Вы можете определять произвольный размер при создании таблицы, но значения 0 или больше, чем 14, будут установлены в 14. Нечетные размеры в диапазоне от 1 до 13 будут приведены к следующему четному числу.

Столбцы TIMESTAMP сохраняют допустимые значения, используя полную точность, с которой значение было определено, независимо от размера отображения. Это имеет несколько значений:

Вы можете до некоторой степени назначать значения одного типа даты объекту иного типа даты. Однако, может иметься некоторое изменение значения или потери информации:

Знайте некоторые ловушки при определении значений даты:

Вы можете определять значения TIME разными способами:

Тип YEAR представляет собой тип с 1 байтом, используемый для представления лет.

Вы можете определять значения YEAR в форматах:

Типы CHAR и VARCHAR подобны, но отличаются способом их хранения и получения.

Длина столбца CHAR фиксирована и задается, когда Вы создаете таблицу. Длина может быть любым значением между 1 и 255. В MySQL Version 3.23 длина CHAR может быть от 0 до 255. Когда значения CHAR сохраняются в таблице, они дополняются справа пробелами до нужной длины. Когда значения CHAR получены, конечные пробелы будут автоматически удалены.

Таблица ниже иллюстрирует различия между двумя типами столбцов, показывая результат сохранения различных значений в CHAR(4) и VARCHAR(4) :

ЗначениеCHAR(4)Для хранения надоVARCHAR(4)Для хранения надо
»‘ ‘4 байта»1 байт
‘ab’‘ab ‘4 байта‘ab’3 байта
‘abcd’‘abcd’4 байта‘abcd’5 байт
‘abcdefgh’‘abcd’4 байта‘abcd’5 байт

Значения в столбцах CHAR и VARCHAR сортируются и сравниваются без учета регистра, если атрибут BINARY не был определен, когда таблица была создана. Атрибут BINARY означает, что значения столбца сортируются и сравниваются с учетом регистра согласно порядку символов серверной (не клиентской!) машины MySQL. BINARY не воздействует на то, как столбец будет сохранен или получен.

MySQL может тихо изменять тип столбца CHAR или VARCHAR при создании таблицы. Подробности в разделе «7.3.1 Тихие изменения спецификации столбца».

Поскольку значения BLOB и TEXT могут быть чрезвычайно длинными, Вы можете столкнуться с ограничениями при использовании:

Обратите внимание, что каждое значение BLOB или TEXT внутренне представляется отдельно распределенным объектом. Это отличие от всех других типов столбца, для которых память распределена один раз на столбец, когда таблица открывается.

ENUM представляет собой строковый объект, чье значение обычно выбрано из списка допустимых значений, которые перечислены явно в спецификации столбца при создании таблицы.

Значение может также быть пустой строкой ( «» ) или NULL при некоторых обстоятельствах:

Каждое значение перечисления имеет индекс:

ЗначениеИндекс
NULLNULL
«»0
«one»1
«two»2
«three»3

Перечисление может иметь максимум 65535 элементов.

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

SET может иметь максимум 64 различных членов.

MySQL сохраняет значения SET в цифровой форме, с битом младшего разряда сохраненного значения, соответствующего первому члену набора. Если Вы получаете значение SET в числовом контексте, оно имеет набор битов, соответствующий членам набора, которые составляют значение столбца. Например, Вы можете получить числовые значения из столбца SET подобно этому:

SET член множестваДесятичное значениеДвоичное значение
a10001
b20010
c40100
d81000

Значения SET сортируются в цифровой форме. NULL расположится перед другими значениями.

Но следующее будет также работать:

Первая из этих инструкций ищет точное соответствие. Вторая ищет значения, содержащие первый член набора.

Чтобы использовать код, написанный для реализаций SQL от других авторов, MySQL отображает типы столбцов как показано в таблице ниже. Эти отображения делают проще перенос определения таблиц:

Чужой типТип в MySQL
BINARY(NUM)CHAR(NUM) BINARY
CHAR VARYING(NUM)VARCHAR(NUM)
FLOAT4FLOAT
FLOAT8DOUBLE
INT1TINYINT
INT2SMALLINT
INT3MEDIUMINT
INT4INT
INT8BIGINT
LONG VARBINARYMEDIUMBLOB
LONG VARCHARMEDIUMTEXT
MIDDLEINTMEDIUMINT
VARBINARY(NUM)VARCHAR(NUM) BINARY

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

5.2.6.1 Требования к памяти для чисел


Тип столбцаДля хранения надо
TINYINT1 байт
SMALLINT2 байта
MEDIUMINT3 байта
INT4 байта
INTEGER4 байта
BIGINT8 байта
FLOAT(X)4, если X FLOAT4 байта
DOUBLE8 байта
DOUBLE PRECISION8 байта
REAL8 байта
DECIMAL(M,D)M+2 байт, если D > 0, M+1 байт, если D=0 ( D +2, если M )
NUMERIC(M,D)M+2 байт, если D > 0, M+1 байт, если D=0 ( D +2, если M )

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


Тип столбцаДля хранения надо
DATE3 байта
DATETIME8 байта
TIMESTAMP4 байта
TIME3 байта
YEAR1 байт

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

Типы BLOB и TEXT требуют 1, 2, 3 или 4 байта, чтобы записать длину значения столбца, в зависимости от максимальной возможной длины типа.

Если таблица включает любые столбцы переменной длины, формат записи будет также переменной длины. Обратите внимание, что, когда таблица создана, MySQL может, при некоторых условиях, изменять столбец с типа переменной длины на тип фиксированной длины. Подробности в разделе «7.3.1 Тихие изменения спецификации столбца».

Размер объекта ENUM определен числом различных значений перечисления. Один байт используется для перечислений до 255 возможных значений. Два байта используются для перечислений до 65535 значений. Подробности в разделе «5.3.3 Тип ENUM «.

Источник

Типы данных MySQL. Чем руководствоваться при выборе типа данных

Опубликовано: 23 Апреля 2019

Выбирая тип данных для столбца, прежде всего стоит определить общий класс данных, который лучше использовать для столбца: числовые, строковые или временные;

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

Например, в столбцах DATETIME и TIMESTAMP можно хранить один и тот же тип данных: дату и время, с точностью до секунды. Однако тип TIMESTAMP требует вдвое меньше места, позволяет работать с часовыми поясами и обладает специальными средствами автоматического обновления. С другой стороны, диапазон допустимых значений для него намного уже.

На что обратить внимание при выборе типа данных:

Скорость при соединении столбцов типа VARCHAR и ENUM:

Соединение VARCHAR с VARCHAR

Соединение VARCHAR с ENUM

Соединение ENUM с VARCHAR

Соединение ENUM с ENUM

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

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

Хранение целых чисел

СУБД MySQL позволяет указывать для целых чисел «размер», например INT(11). Для большинства приложений это не имеет значения: диапазон возможных значений этим не ограничивается. Однако данный параметр говорит некоторым интерактивным инструментам MySQL, сколько позиций необходимо зарезервировать для вывода числа. С точки зрения хранения и вычисления INT(1) и INT(20) идентичны.

Знаковые и беззнаковые типы требуют одинакового пространства и обладают одинаковой производительностью.

Необязательный атрибут ZEROFILL заполнит нулями свободные позиции слева. Например с TINYINT(3) ZEROFILL, величина 2 будет записана, как 002.

Тип данныхБитПо умолчаниюUNSIGNED
TINYINT8-128 — 1270 — 255
SMALLINT16-32768 — 327670 — 65535
MEDIUMINT24-8388608 — 83886070 — 16777215
INT32-2147483648 — 21474836470 — 4294967295
BIGINT64-9223372036854775808 — 92233720368547758070 — 18446744073709551615

Хранение дробных чисел

Все типы допускают приближенные математические вычисления с плавающей точкой, но в случае с FLOAT и DOUBLE операции выполняются быстрее, так как процессор выполняет их естественным для него образом.

M — количество отводимых под число символов. D — количество символов дробной части.

Для типов с плавающей точкой можно указать максимально разрешенное количество цифр до и после десятичной запятой. В случае с DECIMAL это влияет на объем пространства, требуемого для хранения данных столбца. При указании точности, в некоторых случаях, MySQL незаметно для пользователя может выбирать другой тип данных или будет округлять значения при сохранении. Поэтому рекомендуют указывать желаемый тип, но не точность.

FLOAT и DOUBLE могут иметь параметр UNSIGNED, запрещающий отрицательные числа, но диапазон значений от этого не изменится.

Число типа DECIMAL в MySQL 5.0 и более новых версиях может содержать до 65 цифр. В более ранних версиях MySQL тип DECIMAL имел предел 254 цифры и хранил значения в виде неупакованных строк (один байт на цифру). Однако эти версии СУБД не умели использовать такие большие числа в вычислениях, поскольку тип DECIMAL был просто форматом хранения. При выполнении каких-либо операций значения DECIMAL преобразовывались в тип DOUBLE.

Строковые типы

В типах CHAR и VARCHAR строки рассматриваются как последовательности символов, поэтому, при использовании многобайтных кодировок, например UNICODE, размер строки в байтах будет больше, чем в символах.

При создании таблицы нельзя комбинировать столбцы типов CHAR и VARCHAR. Если такое произойдет, то MySQL изменит тип столбцов CHAR на тип VARCHAR.

Представим что строковый тип применяется для хранения значений Y и N. В случае использования CHAR(1) значение займет один байт, тогда как для типа VARCHAR(1) потребуется два байта из-за наличия дополнительного байта длины строки.

ЗначениеCHAR(4)Требуется хранилищеVARCHAR(4)Требуется хранилище
»‘ ‘4 байта»1 байт
‘ab’‘ab ‘4 байта‘ab’3 байта
‘abcd’‘abcd’4 байта‘abcd’5 байт
‘abcdefgh’‘abcd’4 байта‘abcd’5 байт

Двоичные строки

Для совместимости со старыми версиями MySQL введены два специальных типа данных: BINARY и VARBINARY, которые эквивалентны типам CHAR и VARHAR, однако строка в них рассматривается как последовательность байтов, а не символов. К BINARY строкам не применимы кодировки и сортируются они как обычные последовательности байтов. Эти типы могут быть полезны, когда нужно сохранять двоичные данные, и вы хотите, чтобы MySQL сравнивал значение как байты, а не как символы. При этом, двоичное сравнение может оказаться значительно проще и быстрее символьного.

Текстовые и бинарные типы

Предназначены для хранения больших объемов двоичных или символьных данных.

MySQL обрабатывает значения BLOB и TEXT как отдельные объекты. Единственное различие между семействами BLOB и TEXT заключается в том, что типы BLOB хранят двоичные данные без учета схемы упорядочения и кодировки, а с типами TEXT ассоциированы схемы упорядочения и кодировка.

Семейство TEXT используется для хранения непосредственно текста:

Cемейство BLOB — для хранения изображений, звука, электронных документов и т.д.:

MySQL не может индексировать данные этих типов по полной длине и не может использовать для сортировки индексы.

Подсистема хранения Memory не поддерживает типы BLOB и TEXT.

Источник

Типы полей в MySQL

Атрибут unsigned mysql что это. Смотреть фото Атрибут unsigned mysql что это. Смотреть картинку Атрибут unsigned mysql что это. Картинка про Атрибут unsigned mysql что это. Фото Атрибут unsigned mysql что это

В этой статье мы освятим очень важный вопрос, связанный с тем, какие типы полей в таблицах предоставляет нам MySQL. Ведь не секрет, что записи в таблицах должны соответствовать этим типам. И каждая ячейка записи должна удовлетворять определённым условиям, которые как раз и задаются типом поля в MySQL.

Давайте с Вами по порядку разберём все типы полей в MySQL

1. VARCHAR. Это тип является строковым, причём строкой переменной длины от 0 до 255 символов.

3. TEXT (BLOB). Это обычный строковый тип, в котором максимальная длина составляет 65535 символов. Идеальный вариант для хранения текстов статей.

4. DATE. Этот тип отвечает за дату. Формат следующий: «YYYY-MM-DD«. Например, такое значение будет удовлетворять этому полю: «2011-01-02«.

11. DECIMAL. Редко используемый тип даных, но тем не менее. Это число, похожее на тип DOUBLE, но хранится оно в виде строки. И, фактически, интервал допустимых значений определяется наличием знака «» и «.«. Если эти знаки отсутсвуют, то допустимый интервал такой же, как и у DOUBLE.

12. DATETIME. Тип данных, отвечающих за хранение даты и времени. Формат следующий: «YYYY-MM-DD HH:MM:SS«.

13. TIMESTAMP. Определённая временная метка, которая может иметь один из следующих форматов: «YYYYMMDDHHMMSS«, «YYMMDDHHMMSS«, «YYYYMMDD«, «YYMMDD«.

14. TIME. Простой тип, отвечающий за время в формате: «HH:MM:SS«.

15. YEAR. Тип, отвечающий за год в одном из двух форматов: «YY«, «YYYY«.

16. CHAR. Строка фиксированной длины. Диапазон состовляет от 0 до 255 символов. При хранении данный тип добавляет к концу строки количество пробелов до заданного размера.

17. TINYTEXT (TINYBLOB). Текст с длиной от 0 до 255 символов.

18. MEDIUMTEXT (MEDIUMBLOB). Текст с длиной от 0 до 16777215 символов.

19. LONGTEXT (LONGBLOB). Текст с длиной от 0 до 4294967295 символов.

20. ENUM. Этот тип содержит список значений. Другими словами, значение соответствующей ячейки записи должно быть выбрано из списка допустимых строковых значений (аналог radiobutton). Максимальное количество значений 65535.

Вот мы и познакомились со всеми типами полей в MySQL. Как и обещал, рассказываю, как выбрать, какое число будет использоваться: положительное или отрицательное. Для этого есть специальный атрибут UNSIGNED, который если стоит, то число положительное, а если его нет, то число может быть как положительным, так и отрицательным. Впрочем, потом Вы всё поймёте, а пока просто примите это к сведению.

Разумеется, всё это запоминать не нужно. И давайте я сейчас Вам перечислю типы, которые используются очень часто и которые многократно использовал я сам:

Как видите, типов полей в MySQL очень много, но используются активно всего 5-6, поэтому всё очень и очень просто.

Источник

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

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