MySQL datatype INT (11) тогда как UNSIGNED INT(10)?

в MySQL, если мы создаем тип данных поля INT и не указывает никакой длины / значений, то он автоматически стал int(11) и если мы ставим атрибут без знака или БЕЗ ЗНАКА ZEROFILL затем он превращается в int(10)

где это длина(1) идет?

3 ответов


значение int может быть -2147483648 это 11 цифр, поэтому по умолчанию дисплей размер 11

unsigned int не допускает отрицательных чисел, поэтому по умолчанию ему нужно только дисплей размер 10

Как показывает документация ниже, количество битов, необходимых для хранения подписанного INT и UNSIGNED INT, одинаковое, диапазон запоминаемых чисел просто сдвинут:

тип без знака можно использовать для разрешение только неотрицательные числа в столбце или когда вам нужен более большой верхний числовой диапазон для столбца. Для пример, если столбец INT не имеет знака, размер диапазона столбца: то же самое, но его конечные точки смещаются от -2147483648 и 2147483647 до 0 и 4294967295.

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html


по данным документация, это число просто ширина дисплея.

например, INT (4) задает INT с шириной отображения четыре десятичные знаки.

ширина дисплея не ограничивает диапазон значений, которые могут быть хранится в столбце. Он также не предотвращает значения шире столбца ширина отображения отображается правильно. Например, столбец указанный в качестве SMALLINT (3) имеет обычный ряд SMALLINT -32768 к 32767, и значения вне диапазона, разрешенного тремя цифрами отображается в полном объеме с использованием более трех цифр.

на по умолчанию ширина дисплея для UNSIGNED INT один меньше, чем для не-UNSIGNED INT просто потому, что вы никогда не будете показывать - символ.

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

использование термина "цифры" в документации здесь немного вводит в заблуждение.


просто incase кто-то не совсем понимает ответ Шакти (как я не сделал). Вот визуальное представление почему:

 Signed minimum:
 - 2 1 4 7 4 8 3 6 4  8
 1 2 3 4 5 6 7 8 9 10 11

 Unsigned max (also the signed max):
 4 2 9 4 9 6 7 2 9 5
 1 2 3 4 5 6 7 8 9 10