Pongamos un ejemplo para int (10) uno con la palabra clave zerofill, uno no, a la tabla le gusta eso:
create table tb_test_int_type(
int_10 int(10),
int_10_with_zf int(10) zerofill,
unit int unsigned
);
Insertemos algunos datos:
insert into tb_test_int_type(int_10, int_10_with_zf, unit)
values (123456, 123456,3147483647), (123456, 4294967291,3147483647)
;
Luego
select * from tb_test_int_type;
# int_10, int_10_with_zf, unit
'123456', '0000123456', '3147483647'
'123456', '4294967291', '3147483647'
Podemos ver eso
con la palabra clave zerofill, num menos de 10 llenará 0, pero sin zerofillella no
En segundo lugar, con la palabra clave zerofill, int_10_with_zf se convierte en el tipo int sin signo, si inserta un signo menos, obtendrá un error Out of range value for column...... Pero puede insertar menos a int_10. Además, si inserta 4294967291 en int_10 obtendrá un errorOut of range value for column.....
Conclusión:
int (X) sin palabra clave zerofill, es igual al rango int -2147483648 ~ 2147483647
int (X) con la palabra clave zerofill, el campo es igual al rango int sin signo 0 ~ 4294967295, si la longitud de num es menor que X, llenará 0 a la izquierda