Каков размер столбца 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
, который будет добавляться нули, пока он не будет соответствовать вашей длине
Обратите внимание, что значение, сохраненное в базе данных, не изменяется, любые вычисления будут вести себя как есть.
Замечания:
если значение имеет меньше цифры, чем "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
min значение. Один бит для знака.
Как уже говорили другие, минимальные/максимальные значения, которые может хранить столбец, и объем памяти, который он занимает в байтах, определяется только типом, а не длиной.
Многие из этих ответов говорят о том, что часть (11)
влияет только на ширину экрана, что не совсем верно, но в основном.
Определение int(2)
с нулевым заполнением не указано :
100
100
при выводе (не 0
или 00
)Единственное, что сделает (2)
, это , если также указан zerofill:
1
будет показано 01
.Лучший способ увидеть все нюансы - запустить:
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 и может отличаться или не отличаться для других реализаций.
Каков размер столбца int (11) в mysql в байтах?
(11)
- этот атрибут типа данных int
не имеет никакого отношения к размеру столбца. Это просто ширина отображения целочисленного типа данных. С 11.1.4.5. Атрибуты числового типа:
MySQL поддерживает расширение для необязательного указания отображения ширина целочисленных типов данных в скобках после базового ключевого слова для типа. Например, INT (4) определяет INT с отображением ширина четыре цифры.
Хорошее объяснение этому можно найти здесь
Подводя итог: число 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.
Хотя этот ответ вряд ли будет замечен, я думаю, что следующее разъяснение стоит сделать:
БИТ ДЕТАЛИ
ширина видимости, по-видимому, предназначена для предоставления некоторых метаданных о том, сколько нулей будет отображаться в нулевом заполненном номере.
Он фактически не ограничивает длину числа, возвращаемого из запроса, если это число превышает указанную ширину отображения.
Чтобы узнать, какая длина/ширина фактически разрешена для целочисленного типа данных в MySQL, см. Список и ссылку: (types: 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
согласно этой книге:
MySQL позволяет вам указывать "ширину" для целочисленных типов, таких как INT (11). Это бессмысленно для большинства приложений: оно не ограничивает допустимый диапазон значений, но просто указывает количество символов Интерактивные инструменты MySQL будут зарезервированы для отображения. За В целях хранения и вычислений INT (1) идентичен INT (20).
Я думаю, что максимальное значение int (11) равно 4294967295
4294967295 - это ответ, потому что int (11) показывает максимум 11 цифр IMO