Why does mySQL automatically add display length to numeric values when adding zerofill property I am trying to understand better how the data types are processed by the MySQL system, so I created a table in the following way:
# Field, Type, Null, Key, Default, Extra
test1, tinyint(3) unsigned zerofill, YES, , , 
test2, smallint(5) unsigned zerofill, YES, , , 
test3, int(10) unsigned zerofill, YES, , , 
test4, bigint(20) unsigned zerofill, YES, , , 

I initially added only the columns without autofill:
create table test (
test1 tinyint,
test2 smallint,
test3 int,
test4 bigint
);

And the table looked like this:
# Field Type    Null    Key Default Extra
test1   tinyint  YES            
test2   smallint    YES         
test3   int YES         
test4   bigint  YES         

But then I added the autofill property via alter table and the final result was this:
# Field Type    Null    Key Default Extra
test1   tinyint(3) unsigned zerofill    YES         
test2   smallint(5) unsigned zerofill   YES         
test3   int(10) unsigned zerofill   YES         
test4   bigint(20) unsigned zerofill    YES         

My question is why does it define automatically the display length for the columns?
In the past, INT(5) was identical to INT.  The number was useful only when ZEROFILL was also specified.
In the future, ZEROFILL and the number will go away.  This incompatible change is predicted for some time in 8.0.xx.  You are probably seeing some step toward it.
Zerofill is extremely rarely used.  US Zipcodes stored in MEDIUMINT(5) UNSIGNED ZEROFILL is the only case I can think of off-hand.
When Zerofill goes away, there are workarounds for the rare cases where you really need it.
The number confuses a lot of people.  It takes time for newbies to understand that it is normally of no use.
Although DESCRIBE and information_schema.TABLES are tempting for displaying the schema for a table, please get in the habit of using SHOW CREATE TABLE; it rolls the useful information together in a canonical form.