Каков размер столбца int(11)
в mysql в байтах?
И Максимальное значение, которое может быть сохранено в этих столбцах?
INT всегда будет 4 байта независимо от того, какая длина указана.
Длина просто указывает, сколько символов будет отображаться при выборе данных с помощью клиента командной строки mysql.
... и максимальное значение будет равно 2147483647 (Подпись) или 4294967295 (Без знака)
10
дюймов с -
до этого.
В соответствии с здесь, int(11)
будет занимать 4 байта пространства, которое составляет 32 бита пространства с максимальным значением 2^(31) = 2147483648
и -2147483648
min значение. Один бит для знака.
INT (somenumber) будет делать разницу только в терминах отображения, то есть указывать цифры в цифрах "somenumber" и не ограничиваться только 11. Но значение, хранящееся в базе данных, равно не затронуты.
Обратите внимание, что:
если значение имеет меньшую цифру, чем "somenumber" , вам нужно использовать атрибут ZEROFILL
, иначе нет никакой разницы.
INT (5) ZEROFILL с сохраненным значением 32 покажет 00032
INT (5) с сохраненным значением 32 покажет 32
INT с сохраненным значением 32 покажет 32
если значение имеет больше цифры, чем "somenumber" , тогда будет показано сохраненное значение.
INT (3) с сохраненным значением 250000 покажет 250000
ZEROFILL
.
Каков размер столбца int (11) в mysql в байтах?
(11)
- этот атрибут типа данных int
не имеет никакого отношения к размеру столбца. Это просто ширина отображения целочисленного типа данных. Из 11.1.4.5. Атрибуты числового типа:
MySQL поддерживает расширение для необязательного указания отображения ширина целых типов данных в круглых скобках, следующих за ключевым словом base для типа. Например, INT (4) указывает INT с дисплеем ширина четырех цифр.
Как говорили другие, минимальные/максимальные значения, которые может хранить столбец, и сколько памяти он занимает в байтах, определяется только типом, а не длиной.
Многие из этих ответов говорят о том, что часть (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,
`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 (N) часто путается максимальным размером, разрешенным для столбца, как это имеет место в случае varchar (N).
Но это не относится к типам данных Integer - число 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 байта.
Для получения дополнительной информации о размере/диапазоне типов Integer см. Руководство по MySQL
Хотя этот ответ вряд ли будет замечен, я думаю, что следующее разъяснение стоит сделать:
БИТ ДЕТАЛИ
ширина видимости, по-видимому, предназначена для предоставления некоторых метаданных о том, сколько нулей будет отображаться в нулевом заполненном номере.
Он фактически не ограничивает длину числа, возвращаемого из запроса, если это число превышает указанную ширину отображения.
Чтобы узнать, какая длина/ширина фактически разрешена для целочисленного типа данных в MySQL, см. Список и ссылку: (types: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT);
Поэтому, сказав выше, вы можете ожидать, что ширина экрана не повлияет на результаты стандартного запроса, если только столбцы не указаны как столбцы ZEROFILL
ИЛИ
в случае, когда данные втягиваются в приложение, и это приложение собирает ширину отображения для использования для какого-либо другого типа заполнения.
Основная ссылка: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean
n
, так что ... да, это чушь. Это только делает что-нибудь с zerofill.
В 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) равно 4294967295
4294967295 - это ответ, потому что int (11) показывает максимум 11 цифр IMO
mysql
до моего приезда. Спасибо