Vamos dar um exemplo para int (10) um com a palavra-chave zerofill, outro não, a tabela gosta disso:
create table tb_test_int_type(
int_10 int(10),
int_10_with_zf int(10) zerofill,
unit int unsigned
);
Vamos inserir alguns dados:
insert into tb_test_int_type(int_10, int_10_with_zf, unit)
values (123456, 123456,3147483647), (123456, 4294967291,3147483647)
;
Então
select * from tb_test_int_type;
# int_10, int_10_with_zf, unit
'123456', '0000123456', '3147483647'
'123456', '4294967291', '3147483647'
Nós podemos ver isso
com a palavra-chave zerofill
, num inferior a 10 preencherá 0, mas sem zerofill
ela não
Em segundo lugar, com a palavra-chave zerofill
, int_10_with_zf se torna um tipo int sem sinal; se você inserir um sinal de menos, receberá um erro Out of range value for column.....
. Mas você pode inserir menos para int_10. Além disso, se você inserir 4294967291 em int_10, receberá um erroOut of range value for column.....
Conclusão:
int (X) sem palavra-chave zerofill
, é igual ao intervalo int -2147483648 ~ 2147483647
int (X) com a palavra-chave zerofill
, o campo é igual ao intervalo int não assinado de 0 a 4294967295, se o comprimento de num for menor que X, ele preencherá 0 à esquerda