Давайте приведем пример для int (10), один с ключевым словом zerofill, один нет, таблице нравится:
create table tb_test_int_type(
int_10 int(10),
int_10_with_zf int(10) zerofill,
unit int unsigned
);
Давайте вставим некоторые данные:
insert into tb_test_int_type(int_10, int_10_with_zf, unit)
values (123456, 123456,3147483647), (123456, 4294967291,3147483647)
;
Тогда
select * from tb_test_int_type;
# int_10, int_10_with_zf, unit
'123456', '0000123456', '3147483647'
'123456', '4294967291', '3147483647'
Мы видим, что
с ключевым словом zerofill
, число меньше 10 заполнит 0, но без zerofill
не будет
Во-вторых, с ключевым словом zerofill
int_10_with_zf становится типом unsigned int, если вы вставите минус, вы получите ошибку Out of range value for column.....
.Но вы можете вставить минус в int_10.Также, если вы вставите 4294967291 в int_10, вы получите ошибку Out of range value for column.....
Вывод:
int (X) без ключевого слова zerofill
,равно int range -2147483648 ~ 2147483647
int (X) с ключевым словом zerofill
, поле равно целому диапазону без знака 0 ~ 4294967295, если длина num меньше Xзаполнит 0 слева