Тази допълнителна ширина на дисплея с „функция“ е доста объркваща, тъй като в други типове колони като CHAR
is определя дължината.
Ето кратка разбивка:
- Най-важното:не указване на "пространството за съхранение" или "броя на цифрите". Просто се казва как са форматирани данните в тази колона преди да бъде върнато. INT(5) може да съхранява същото стойности като INT(16) или INT(255) - и трите могат да съхраняват всички (и само) стойности, които са валидни за INT. INT(255) не може да съхранява число с 255 цифри. Мястото за съхранение за всички тях е пространството, което заема INT.
- Ако използвате
ZEROFILL
в колона с ширина на дисплея и низовото представяне на съхраненото число е по-късо от ширината на дисплея, то ще бъде допълнено отляво с нули. Ако е по-дълго, нищо не се случва. Ако изберете INT(5) и стойността е 13, тя ще бъде върната като 00013. Ако стойността е 123456, тя ще бъде върната като 123456. - Ако не използвате
ZEROFILL
, изобщо няма да има подпълване (без интервали и други подобни) - Ако използвате
ZEROFILL
, трябва да сте наясно, че колоната също ще бъдеUNSIGNED
- Във всеки случай ширината на дисплея се връща при запитване на метаданните на таблицата. Така едно приложение може да знае как трябва да бъдат форматирани данните.
Не ми харесва ширината на дисплея, защото слоят за съхранение "знае" за визуалното представяне на съхранените данни. Освен това, няма никаква полза, за която знам.