Який розмір стовпця int(11)
у mysql у байтах?
І Максимальне значення, яке можна зберігати в цих стовпцях?
mysql
до мого приїзду. Thx
Який розмір стовпця int(11)
у mysql у байтах?
І Максимальне значення, яке можна зберігати в цих стовпцях?
mysql
до мого приїзду. Thx
Відповіді:
INT
Завжди буде 4 байта незалежно від того , якої довжини буде вказано.
TINYINT
= 1 байт (8 біт)SMALLINT
= 2 байти (16 біт)MEDIUMINT
= 3 байти (24 біт)INT
= 4 байти (32 біт)BIGINT
= 8 байт (64 біт).Довжина просто вказує, скільки символів слід прокласти під час вибору даних за допомогою клієнта командного рядка mysql. 12345 зберігається як int(3)
і раніше відображатиметься як 12345, але якби він зберігався так, як int(10)
і раніше відображався б як 12345, але у вас буде можливість додавати перші п'ять цифр. Наприклад, якщо ви додали, ZEROFILL
він відображатиметься як 0000012345.
... а максимальне значення складе 2147483647 (підписано) або 4294967295 (без підпису)
INT ( x ) буде змінюватись лише в терміні відображення , тобто показувати число у x цифрах, а не обмежувати їх 11. Ви з’єднуєте його за допомогою ZEROFILL
, що додаватиме нулі до тих пір, поки воно не відповідає вашій довжині.
Отже, для будь-якої кількості х вINT(x)
якщо збережене значення має менше цифр, ніж x , ZEROFILL
додаватиме нулі.
INT (5) ZEROFILL із збереженим значенням 32 покаже 00032
INT (5) із збереженим значенням 32 покаже 32
INT із збереженим значенням 32 покаже 32
якщо збережене значення має більше цифр, ніж x , воно відображатиметься таким, яким воно є.
INT (3) ZEROFILL із збереженим значенням 250000 покаже 250000
INT (3) із збереженим значенням 250000 покаже 250000
INT зі збереженим значенням 250000 покаже 250000
На фактичне значення, збережене в базі даних, це не впливає, розмір залишається однаковим, і будь-який розрахунок буде вести себе нормально.
Це стосується також BIGINT, MEDIUMINT, SMALLINT та TINYINT.
ZEROFILL
.
Згідно з цим , int(11)
візьме 4 байти простору, що становить 32 біти простору з 2^(31) = 2147483648
максимальним значенням і -2147483648
мінімальним значенням. Один шматочок - для знаку.
Як говорили інші, мінімальне / максимальне значення, яке може зберігати стовпець, і скільки місця займає в байтах, визначається лише типом, а не довжиною.
Багато з цих відповідей говорять про те, що (11)
частина впливає лише на ширину дисплея, що не зовсім відповідає дійсності, але в основному.
Визначення int(2)
з НЕ ZEROFILL зазначеного буде:
100
100
коли вихід (ні 0
чи 00
)Єдине, що (2)
буде зроблено, це якщо вказано також нульове заповнення :
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).
Але це не так з типами даних Integer - число 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, див. Список та посилання: ( типи: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT );
Отже, сказавши вище, ви можете очікувати, що ширина відображення не вплине на результати стандартного запиту, якщо тільки стовпці не вказані як стовпці ZEROFILL
АБО
у випадку, якщо дані перетягуються в додаток, і якщо програма збирає ширина дисплея, яка використовується для деяких інших типів оббивки.
Основна довідка: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean
n
, так що ... так, це булкрап. З нульовим заповненням він робить що завгодно.
У MySQL ціле число 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).