Каков размер столбца int (11) в mysql в байтах?

Каков размер столбца int(11) в mysql в байтах?

И Максимальное значение, которое может быть сохранено в этих столбцах?

INT всегда будет 4 байта независимо от того, какая длина указана.

  • TINYINT = 1 байт (8 бит)
  • SMALLINT = 2 байта (16 бит)
  • MEDIUMINT = 3 байта (24 бит)
  • INT = 4 байта (32 бит)
  • BIGINT = 8 байт (64 бит).

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

… и максимальное значение будет 2147483647 (Подпись) или 4294967295 (Без знака)

INT ( somenumber ) будет иметь значение только в терминах отображения , то есть показывать число в цифрах « somenumber » и не ограничиваться только 11. Вы ZEROFILL его с помощью ZEROFILL , который будет добавлять нули до тех пор, пока он не будет соответствовать вашей длине

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

Примечания:

  • если значение имеет меньшую цифру, чем « somenumber », ZEROFILL будет добавлять нули.

    INT (5) ZEROFILL с сохраненным значением 32 покажет 00032
    INT (5) с сохраненным значением 32 покажет 32
    INT с сохраненным значением 32 покажет 32

  • если значение имеет больше цифры, чем « somenumber », будет отображаться сохраненное значение.

    INT (3) ZEROFILL с сохраненным значением 250000 покажет 250000
    INT (3) с сохраненным значением 250000 покажет 250000
    INT с сохраненным значением 250000 покажет 250000

Аналогичное относится и к BIGINT, MEDIUMINT, SMALLINT и TINYINT.

В соответствии с этим int(11) будет занимать 4 байта пространства, которое представляет собой 32 бита пространства с максимальным значением 2^(31) = 2147483648 и значением -2147483648 минут. Один бит для знака.

Как говорили другие, минимальные / максимальные значения, которые может хранить столбец, и сколько памяти он занимает в байтах, определяется только типом, а не длиной.

Многие из этих ответов говорят о том, что часть (11) влияет только на ширину отображения, которая не совсем верна, но в основном.

Определение int(2) без заданного значения zerofill будет:

  • по-прежнему принимать значение 100
  • по-прежнему отображается значение 100 при выходе (не 0 или 00 )
  • ширина экрана будет равна ширине наибольшего значения, выводимого из запроса выбора.

Единственное, что будет делать (2) , – это указать нуль :

  • будет показано значение 1 01 .
  • При отображении значений столбец всегда будет иметь ширину максимально возможного значения, которое может принимать столбец, который составляет 10 цифр для целого числа, вместо ширины miniumum, необходимой для отображения наибольшего значения, которое должен показать столбец в этом конкретном запросе выбора , что может быть намного меньше.
  • Столбец все равно может принимать и показывать значение, превышающее длину, но эти значения не будут иметь префикса с 0s.

Лучший способ увидеть все нюансы – запустить:

 CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `int1` int(10) NOT NULL, `int2` int(3) NOT NULL, `zerofill1` int(10) ZEROFILL NOT NULL, `zerofill2` int(3) ZEROFILL NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `mytable` (`int1`, `int2`, `zerofill1`, `zerofill2`) VALUES (10000, 10000, 10000, 10000), (100, 100, 100, 100); select * from mytable; 

который будет выводить:

 +----+-------+-------+------------+-----------+ | id | int1 | int2 | zerofill1 | zerofill2 | +----+-------+-------+------------+-----------+ | 1 | 10000 | 10000 | 0000010000 | 10000 | | 2 | 100 | 100 | 0000000100 | 100 | +----+-------+-------+------------+-----------+ 

Обратите внимание, что столбец int1 имеет гораздо меньшую ширину дисплея, чем zerofill2 хотя длина больше.

Этот ответ протестирован против MySQL 5.7.12 для Linux и может отличаться или не изменяться для других реализаций.

Каков размер столбца int (11) в mysql в байтах?

(11) – этот атрибут типа int имеет ничего общего с размером столбца. Это просто ширина отображения целочисленного типа данных. Из 11.1.4.5. Атрибуты числового типа :

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

Хорошее объяснение этому можно найти здесь

Резюмируем: число в скобке в int (N) часто путается максимальным размером, разрешенным для столбца, как в случае varchar (N).

Но это не относится к типам данных Integer – число N в скобках не является максимальным размером для столбца, а просто параметром, указывающим MySQL, какую ширину отображает столбец, когда данные таблицы просматриваются через MySQL console (когда вы используете атрибут ZEROFILL).

Число в скобках подскажет MySQL, сколько нhive для ввода входящих целых чисел. Например: если вы используете ZEROFILL в столбце, который установлен в INT (5), а число 78 вставлено, MySQL будет заполнять это значение нулями до тех пор, пока число не удовлетворяет количеству в скобках. т.е. 78 станет 00078 и 127 станет 00127. Подводя итог: число в скобках используется для показа.
В некотором смысле, число в скобках является бесполезным, если вы не используете атрибут ZEROFILL.

Таким образом, размер для int останется таким же, например, -2147483648 до 2147483648 для подписанных и 0 to 4294967295 для неподписанных (~ 2,15 миллиарда и 4,2 миллиарда долларов), одна из причин, по которым разработчики не знают историю, стоящую за номером N в скобках, поскольку это вряд ли влияет на базу данных, если она содержит более 2 миллиардов строк), а в байтах – 4 байта .

Дополнительные сведения о размере / диапазоне типов Integer см. В Руководстве по MySQL

Хотя этот ответ вряд ли будет замечен, я думаю, что следующее разъяснение стоит сделать:

  • (n) за целым типом данных в MySQL указывает ширину отображения
  • ширина экрана НЕ ограничивает длину числа, возвращаемого из запроса
  • ширина экрана DOES ограничивает количество нhive, заполненных для столбца с нулевым заполнением, поэтому общее число соответствует ширине отображения (пока фактическое число не превышает ширину отображения, и в этом случае номер отображается как есть)
  • ширина экрана также означает полезный инструмент для разработчиков, чтобы знать, какую длину значение должно быть дополнено

ДЕТАЛЬ ПОДРОБНОСТИ
ширина видимости, по-видимому, предназначена для предоставления некоторых метаданных о том, сколько нhive должно отображаться в нулевом заполненном номере.
Он фактически не ограничивает длину числа, возвращаемого из запроса, если это число превышает указанную ширину отображения.
Чтобы узнать, какая длина / ширина фактически разрешена для целочисленного типа данных в MySQL, см. Список & link: ( типы: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT );
Поэтому, сказав выше, вы можете ожидать, что ширина экрана не повлияет на результаты стандартного запроса, если только столбцы не указаны как столбцы ZEROFILL
ИЛИ
в случае, когда данные втягиваются в приложение, и это приложение собирает ширину экрана для использования для какого-либо другого типа заполнения.

Основная ссылка: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean

В MySQL integer int(11) имеет размер 4 байта, что равно 32 бит.

Подписанное значение: – 2^(32-1) to 0 to 2^(32-1)-1 = -2147483648 to 0 to 2147483647

Беззнаковые значения: от 0 to 2^32-1 = от 0 to 4294967295

int(11) означает, что в столбце int может храниться максимальное целочисленное значение с 11 цифрами в длину. Однако это не так. в int (11), 11 – display width целочисленного столбца, в отличие от столбцов символов, где число означает номер символа, который может быть сохранен. Нажми сюда, чтобы прочитать больше

Я думаю, что максимальное значение int (11) равно 4294967295

4294967295 – это ответ, потому что int (11) показывает максимум 11 цифр IMO

  • unsigned short в java
  • Использовать разницу типов
  • Сколько стоит слишком много с ключевым словом C ++ 11 auto?
  • Почему streamи C ++ используют char вместо unsigned char?
  • Интерфейсы Java и типы возврата
  • Рекомендации по хранению почтовых адресов в базе данных (РСУБД)?
  • Разница между типами string и char в C ++
  • .NET Integer vs Int16?
  • В чем разница между 'int?' и 'int' в C #?
  • Как проверить, наследует ли class другой class, не создавая его?
  • Буферный тип данных C99?
  • Давайте будем гением компьютера.