Denna extra "funktions" visningsbredd är ganska förvirrande, eftersom i andra kolumntyper som CHAR
är anger längden.
Här är en kort sammanfattning:
- Det viktigaste:det är inte anger "lagringsutrymme" eller "antal siffror". Det är bara att säga hur informationen i den här kolumnen är formaterad innan den lämnas tillbaka. INT(5) kan lagra samma värden som INT(16) eller INT(255) - alla tre kan lagra alla (och endast) värden som är giltiga för INT. INT(255) kan inte lagra ett nummer med 255 siffror. Lagringsutrymmet för dem alla är det utrymme som en INT upptar.
- Om du använder
ZEROFILL
på en kolumn med visningsbredd, och strängrepresentationen av det lagrade numret är kortare än visningsbredden, kommer den att vara vänsterutfylld med nollor. Om det är längre händer ingenting. Om du väljer INT(5) och värdet är 13, returneras det som 00013. Om värdet är 123456 returneras det som 123456. - Om du inte använder
ZEROFILL
, kommer det inte att finnas någon utfyllnad alls (inga mellanslag och så) - Om du använder
ZEROFILL
, du måste vara medveten om att kolumnen också kommer att varaUNSIGNED
- I alla fall returneras visningsbredden när tabellens metadata efterfrågas. Så ett program kan veta hur data ska formateras.
Jag ogillar visningsbredden, eftersom lagringslagret "vet" om visuell presentation av lagrad data. Utöver detta finns det ingen nytta som jag är medveten om.