Что означает «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.