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



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



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

1057   11  

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мин.значение Один бит для знака.

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

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

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

  • по-прежнему принимать значение 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 |
+----+-------+-------+------------+-----------+

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

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

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

(11) - это атрибут int тип данных не имеет ничего общего с размером столбца. Это просто ширина отображения целочисленного типа данных. От 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 для unsigned (~ 2.15 миллиардов и 4.2 миллиардов, одна из причин, по которой разработчики не знают историю за номером N в скобках, поскольку она вряд ли влияет на базу данных, если она не содержит более 2 миллиардов строк), и с точки зрения байтов это будет 4 байт.

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

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

  • (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

Comments

    Ничего не найдено.