разница - mysql скачать



Что на самом деле означает число в скобках? (2)

Это относится к типам полей, таким как vchar, но для чисел это число байтов, которое оно использует для представления числа. Целое число из двух байтов означает, что вы можете хранить число 2 ^ 16 - 1 (8 бит в байте, итого 16). Если это возраст, я думаю, вы должны быть в безопасности с двумя байтами. ;)

https://src-bin.com

Я всегда думал, что число в скобках представляет длину поля? Однако я понимаю, что это не всегда так. Может быть, это проблема MySQL? Кто-то сказал мне, что если я установлю поле длиной 9 символов, я могу добавить значение, которое превышает 9 символов, но сохранятся только первые 9 символов.

Пример ...

create table "person" ( id INT, age INT(2));

Если это так, разве я не должен выбирать что-то вроде TINYINT вместо INT для возраста?


Answer #1

INT(2) сгенерирует INT с минимальной шириной отображения 2 :

MySQL поддерживает расширение для необязательного указания ширины отображения целочисленных типов данных в скобках после базового ключевого слова для типа. Например, INT (4) определяет INT с шириной отображения четырех цифр. Эта необязательная ширина отображения может использоваться приложениями для отображения целочисленных значений, ширина которых меньше ширины, указанной для столбца, путем добавления их слева с пробелами. (То есть эта ширина присутствует в метаданных, возвращаемых с наборами результатов. Независимо от того, используется она или нет, зависит от приложения.)

Ширина отображения не ограничивает диапазон значений, которые могут быть сохранены в столбце. Также это не препятствует правильному отображению значений, которые шире, чем ширина отображения столбца. Например, столбец, указанный как SMALLINT (3), имеет обычный диапазон SMALLINT от -32768 до 32767, а значения, выходящие за пределы диапазона, разрешенного тремя цифрами, отображаются полностью, используя более трех цифр.

это не влияет на диапазон возможных значений, которые могут быть сохранены в поле; и при этом это не число байтов, используемых для его хранения. Похоже, это только рекомендация для приложений, как отображать значение, если ZEROFILL не используется ZEROFILL (см. ZEROFILL страницу).

TINYINT (0 ... 255), скорее всего, тоже TINYINT , если только cryopreservation не сделает большой шаг вперед в течение всего жизненного цикла вашего приложения.





mysql