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

MySQL - ограничения размера для целых столбцов

Я использую phpMyAdmin для создания моих структур таблиц.

Я могу прочитать на страницах документации MySQL о ограничениях размера для типов Integer: Справочник по типам MySQL Integer


Итак, здесь я немного запутался в создании столбца.

Я хочу создать столбец в таблице: tbl_note_categories называется notescounter

Я не предвижу, что я создаю тысячи примечаний в tbl_notes с любым конкретным categoryid. Но я верю, что создаю сотни заметок для каждой категории.

Я нахожусь в этом пункте выбора между: tinyint, smallint, mediumint. Согласно приведенной выше документации, я предполагаю, что smallint - мой лучший выбор.

Итак, вот мое замешательство. PhpMyAdmin запрашивает параметр Длина/Значения. Я хочу убедиться, что этот новый столбец (notescounter) не имеет знака, давая мне до 65536. Означает ли это, что мне нужно, чтобы длина/значения были (5)?

Я предполагаю, что длина - длина символа, но я не уверен. (по сравнению с varchar)

Snapshot of New column in PhpMyadmin

4b9b3361

Ответ 1

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

  • TINYINT всегда 8 бит и может хранить 2 8 различные значения.
  • SMALLINT всегда 16 бит и может хранить 2 16 различные значения.
  • INT всегда 32 бит и может хранить 2 32 различные значения.
  • BIGINT всегда 64 бит и может хранить 2 64 различные значения.

Там также MEDIUMINT, но инженеры, которые работают на MySQL, говорят мне, что MEDIUMINT всегда получает поддержку 32-битного INT внутри, поэтому на самом деле нет никакой пользы для использования MEDIUMINT.

Длина отображается только для отображения, и это имеет значение только при использовании параметра ZEROFILL.

См. пример в моем ответе на В чем разница (при применении к моему коду) между INT (10) и INT (12)?

Ответ 2

Да, вы хотите указать длину 5.

В MySQL атрибут length для целых типов является необязательным. Это расширение MySQL, которое является нестандартным).

Когда он опущен из объявления столбца, MySQL предоставляет значение по умолчанию. Для SMALLINT UNSIGNED значение по умолчанию - 5.

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

http://dev.mysql.com/doc/refman/5.5/en/numeric-type-attributes.html