Ta dodatkowa "funkcja" szerokości wyświetlania jest dość myląca, ponieważ w innych typach kolumn, takich jak CHAR
to określa długość.
Oto krótki podział:
- Najważniejsze:to nie określając „miejsce do przechowywania” lub „liczbę cyfr”. Mówi tylko o tym, jak dane w tej kolumnie są sformatowane zanim zostanie zwrócony. INT(5) może przechowywać to samo wartości takie jak INT(16) lub INT(255) - wszystkie trzy mogą przechowywać wszystkie (i tylko) wartości, które są ważne dla INT. INT(255) nie może przechowywać numeru składającego się z 255 cyfr. Miejsce do przechowywania dla wszystkich z nich to miejsce, które zajmuje INT.
- Jeśli używasz
ZEROFILL
na kolumnie z szerokością wyświetlania, a ciąg reprezentujący przechowywaną liczbę jest krótszy niż szerokość wyświetlania, zostanie dopełniony zerami z lewej strony. Jeśli trwa dłużej, nic się nie dzieje. Jeśli wybierzesz INT(5), a wartość to 13, zostanie zwrócona jako 00013. Jeśli wartość to 123456, zostanie zwrócona jako 123456. - Jeśli nie używasz
ZEROFILL
, w ogóle nie będzie dopełniania (bez spacji itp.) - Jeśli używasz
ZEROFILL
, musisz mieć świadomość, że kolumna również będzieUNSIGNED
- W każdym przypadku szerokość wyświetlania jest zwracana podczas zapytania o metadane tabeli. Dzięki temu aplikacja może wiedzieć, jak dane powinny być sformatowane.
Nie podoba mi się szerokość wyświetlacza, ponieważ warstwa przechowywania „wie” o wizualnej prezentacji przechowywanych danych. Poza tym nie ma sensu, o którym wiem.