Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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.

Ответ 3

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

Ответ 4

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

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

Определение int(2) с нулевым заполнением не указано :

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

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

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

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

CREATE TABLE 'mytable' (
    'id' int(11) NOT NULL AUTO_INCREMENT,
    'int1' int(10) NOT NULL,
    'int2' int(3) NOT NULL,
    'zf1' int(10) ZEROFILL NOT NULL,
    'zf2' int(3) ZEROFILL NOT NULL,
    PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO 'mytable' 
('int1', 'int2', 'zf1', 'zf2') 
VALUES
(10000, 10000, 10000, 10000),
(100, 100, 100, 100);

select * from mytable;

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

+----+-------+-------+------------+-------+
| id | int1  | int2  | zf1        | zf2   |
+----+-------+-------+------------+-------+
|  1 | 10000 | 10000 | 0000010000 | 10000 |
|  2 |   100 |   100 | 0000000100 |   100 |
+----+-------+-------+------------+-------+

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

Ответ 5

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

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

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

Ответ 6

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

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

Но дело обстоит не так с целочисленными данными types- . Число 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 байта.

Для получения дополнительной информации о размере/диапазоне целочисленных типов см. руководство по MySQL.

Ответ 7

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

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

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

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

Ответ 8

В 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

Ответ 9

согласно этой книге:

MySQL позволяет вам указывать "ширину" для целочисленных типов, таких как INT (11). Это бессмысленно для большинства приложений: оно не ограничивает допустимый диапазон значений, но просто указывает количество символов Интерактивные инструменты MySQL будут зарезервированы для отображения. За В целях хранения и вычислений INT (1) идентичен INT (20).

Ответ 10

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

Ответ 11

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