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 zerofill
ella 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