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

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

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

11 ответов


An 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, который будет добавлять нули, пока он не соответствует вашей длине

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

Примечания :

  • если значение меньше цифра, чем '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мин.значение Один бит для знака.


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

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

определение int(2) С нет если указано будет:

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

только (2) будет если zerofill также указан:

  • значение 1 будет отображаться 01.
  • при отображении значений столбец всегда будет иметь ширина максимально возможное значение столбца может принимать что составляет 10 цифр для целого числа, вместо ширины miniumum, необходимой для отображения наибольшего значения, которое столбец должен отображать в этом конкретном запросе select, который может быть намного меньше.
  • столбец все еще может принимать и показывать значение, превышающее длину, но эти значения не будут иметь префикса 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 |
+----+-------+-------+------------+-----------+

обратите внимание, как имеет гораздо меньшую ширину, чем zerofill2 даже если длина больше.

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


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

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

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


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

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

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

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

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

дополнительные сведения о целочисленных типах size / range см. В разделе Руководство MySQL


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

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

НЕМНОГО ДЕТАЛЕЙ
ширина отображения, по-видимому, предназначена для предоставления некоторых метаданных о том, сколько нулей отображать в нулевом заполненном числе.
Это фактически не ограничивает длину числа, возвращаемого из запроса, если это число превышает ширина дисплея указана.
Чтобы узнать, какая длина / ширина фактически разрешена для целочисленного типа данных в MySQL, см. список & ссылку: (типы: тип 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) означает в MySQL, что столбец int может хранить максимальное целочисленное значение с 11 цифрами в длине. Однако это не так. в int (11) 11 является display width в целочисленном столбце, В отличие от Столбцов символов, где число означает количество символов, которые могут быть сохранены. нажмите здесь, чтобы прочитать больше


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


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