Является ли BIGINT (8) наибольшим целым числом, которое может хранить mysql? - PullRequest
39 голосов
/ 27 октября 2009

У меня есть некоторые числа, которые теперь больше, чем может обработать INT.

Это немного смущает, но я, честно говоря, точно не знаю, что означает BIGINT (8). 8 в этом максимальном значении бита или максимальной длине?

То есть BIGINT (1) может состоять только из одной цифры? Или BIGINT (1) что-то еще? Я думаю, что tinyint (1) max равен 127, как это получается?

Какое самое большое, что я могу сделать BIGINT? Какое наибольшее число я могу хранить в mysql как целое число?

Ответы [ 5 ]

37 голосов
/ 27 октября 2009

Число показывает, как оно отображается - оно не влияет на то, как хранятся данные.

С инструкция :

Еще одно расширение поддерживается MySQL для необязательного указания ширины отображения целочисленных типов данных в скобках после ключевого слова base для типа (например, INT (4)). Эта необязательная ширина отображения может использоваться приложениями для отображения целочисленных значений, ширина которых меньше ширины, указанной для столбца, путем добавления их слева с пробелами. (То есть эта ширина присутствует в метаданных, возвращаемых с наборами результатов. Независимо от того, используется она или нет, зависит от приложения.)

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

BIGINT всегда имеет размер 8 байтов и может хранить от -9223372036854775808 до 9223372036854775807 (со знаком) или от 0 до 18446744073709551615 (без знака).

10 голосов
/ 27 октября 2009

Вы отвечаете в этом обзоре . BIGINT действительно 8 байтов. Только TinyInt 1.

Кстати, я не считаю диапазон от -9223372036854775808 до 9223372036854775807 очень смущающим, это +/- 2 ^ 63:).

4 голосов
/ 27 октября 2009

Число в скобках является «шириной дисплея» и не связано с диапазоном чисел, который может хранить тип данных.

Диапазон BIGINT составляет от -9223372036854775808 до 9223372036854775807. Диапазон без знака от 0 до 18446744073709551615.

Вы можете найти больше информации здесь: http://dev.mysql.com/doc/refman/5.4/en/numeric-type-overview.html

4 голосов
/ 27 октября 2009

Число просто определяет ширину номера при отображении. Посмотрите руководство mysql для размеров числовых типов .

3 голосов
/ 16 февраля 2014

Для хранения 128-битного целого числа вы можете использовать BINARY (16).

Для 252:

ВЫБРАТЬ ПРАВО (CONCAT (REPEAT ("\ 0", 16), UNHEX (CONV (252,10,16))), 16);

или эквивалентно:

ВЫБРАТЬ UNHEX (ВПРАВО (CONCAT (REPEAT ("0", 32), HEX (252)), 32));

(но целочисленные вычисления MySQL 64-битные)

См. Также последние функции IPv6 INET6_ATON () и INET6_NTOA (), http://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_inet6-aton и как они используют VARBINARY (16).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...