Что означает «unsigned» в MySQL и когда его использовать?


278

Что означает «неподписанный» в MySQL и когда я должен его использовать?

Ответы:


527

MySQL говорит:

Все целочисленные типы могут иметь необязательный (нестандартный) атрибут UNSIGNED. Тип без знака может использоваться для разрешения только неотрицательных чисел в столбце или когда вам нужен больший верхний числовой диапазон для столбца. Например, если для столбца INT задано значение UNSIGNED, размер диапазона столбца будет таким же, но его конечные точки сместятся с -2147483648 и 2147483647 до 0 и 4294967295.

Когда я использую это?

Задайте себе вопрос: будет ли это поле когда-либо содержать отрицательное значение ?
Если ответ «нет», вам нужен UNSIGNEDтип данных.

Распространенной ошибкой является использование первичного ключа, который представляет собой автоинкремент, INTначинающийся с нуля , однако тип таков SIGNED, что в этом случае вы никогда не дотронетесь до отрицательных чисел и уменьшите диапазон возможных идентификаторов до половины.


8
значения, представляющие «размеры» вещей, такие как количество определенного элемента в заказе или расстояние между двумя местоположениями, обычно будут без знака
SingleNegationElimination

31
Отличный ответ, кажется странным, что mysql не будет по умолчанию целые числа без знака, когда они автоматически увеличивают тождества?
wired00

3
Если вы хотите получить более четкий ответ, посмотрите этот stackoverflow.com/a/11515613/6335029
NaveenDA

Я действительно хотел бы, чтобы был также positiveатрибут, поскольку кажется, что еще более распространенным является то, что вы хотите работать только с положительными ненулевыми числами.
still_dreaming_1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.