Тип данных MySQL INT (11), тогда как UNSIGNED INT (10)? - PullRequest
48 голосов
/ 10 марта 2011

в MySQL, если мы создаем поле dataType со значением INT и не указываем никакой длины / значений, тогда оно автоматически становится int(11), и если мы устанавливаем атрибут UNSIGNED или UNSIGNED ZEROFILL тогда это превращается в int(10)

Куда идет эта length (1) ?

Ответы [ 3 ]

67 голосов
/ 10 марта 2011
Значение

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

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

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

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

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

24 голосов
/ 25 июля 2011

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

Например, INT (4) определяет INT с дисплеемширина из четырех цифр.

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

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

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

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

8 голосов
/ 25 июля 2011

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

 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
...