Если я использую INT (12) против INT (10) или INT (8), что это будет делать с точки зрения меня, используя код?
(Это связано с предыдущим вопросом ). Я читаю руководства и думаю, что понимаю, что они говорят, но я действительно не знаю, как это применимо к моей кодировке php / mysql.
Может ли кто-нибудь представить пример того, где это действительно имеет значение?
Короткий ответ: нет никакой разницы.
Ширина дисплея возвращается в «метаданные». Это приложение может использовать его. Обычно это просто игнорируется. Я не думаю, что вы можете получить его с помощью функций mysql, но вы можете с помощью mysqli использовать mysqli_fetch_field_direct .
Аргумент для целочисленных типов в MySQL не влияет на хранение данных или диапазон значений, поддерживаемых каждым типом данных.
Аргумент применяется только к ширине отображения, которая может использоваться приложениями, как упоминает Джонатан Финнгленд. Он также появляется при использовании в сочетании с опцией ZEROFILL
:
CREATE TABLE foo ( i INT(3) ZEROFILL, j INT(6) ZEROFILL, k INT(11) ZEROFILL ); INSERT INTO foo (i, j, k) VALUES (123, 456, 789); SELECT * FROM foo; +------+--------+-------------+ | i | j | k | +------+--------+-------------+ | 123 | 000456 | 00000000789 | +------+--------+-------------+
Посмотрите, как ZEROFILL
гарантирует, что данные будут заполнены нулями, по крайней мере, до количества цифр, равных аргументу целочисленного типа.
Без ZEROFILL
данные ZEROFILL
пробелами, но поскольку в любом случае пространства часто обрезаются, сложнее увидеть эту разницу.
Что влияет на ваш PHP-код? Никто. Если вам нужно вывести столбчатые данные, или пробельные или нулевые значения, более гибко использовать sprintf()
,
Вам не нужно ничего менять, поскольку оно не влияет на возвращаемые данные. Эта информация может использоваться приложениями, которые хотят ее использовать.
См. http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html.
Другое расширение поддерживается MySQL для необязательного указания ширины отображения целочисленных типов данных в круглых скобках, следующих за базовым ключевым словом для типа (например, INT (4)). Эта дополнительная ширина экрана может использоваться приложениями для отображения целочисленных значений, имеющих ширину, меньшую ширины, указанной для столбца, путем добавления пробелов влево. (То есть эта ширина присутствует в метаданных, возвращаемых с помощью наборов результатов. Используется ли она или нет до приложения. )
Ширина дисплея не ограничивает диапазон значений, которые могут быть сохранены в столбце, а также количество цифр, отображаемых для значений, имеющих ширину, превышающую ширину, указанную для столбца. Например, столбец, указанный как SMALLINT (3), имеет обычный диапазон SMALLINT от -32768 до 32767, а значения за пределами диапазона, разрешенные тремя символами, отображаются с использованием более трех символов.
(Акцент мой)