Mysql에서는 데이터 타입을 선언할 때 괄호 안에 자릿수를 선언한다. (20)이면 20자리, (100)이면 100자리까지 넣겠다는 의미이다. 하지만 int나 bigint에서는 괄호 안의 숫자는 Zerofill이라는 옵션을 추가로 사용할 때만 의미가 있다. 그것이 무슨 이야기인지 테스트를 해보았다.
CREATE TABLE test (
int_1 INT(1),
zero_1 INT(1) ZEROFILL,
int_5 INT(5),
zero_5 INT(5) ZEROFILL,
int_11 INT(11),
zero_11 INT(11) ZEROFILL
);
Zerofill 옵션을 설정한 필드와 그렇지 않은 필드들의 자릿수를 다르게 하여 선언하였다.
INSERT INTO test VALUES (1, 1, 1, 1, 1, 1);
INSERT INTO test VALUES (12345, 12345, 12345, 12345, 12345, 12345);
INSERT INTO test VALUES (1234567890, 1234567890, 1234567890, 1234567890, 1234567890, 1234567890);
테스트할 데이터를 여러 개 넣고 확인을 해보았다.
SELECT * FROM test;
Zerofill 옵션은 입력된 값의 자릿수를 일관되게 맞추려는 목적으로 사용되고 해당 컬럼에 입력된 값의 자릿수가 지정된 자릿수보다 작다면 좌측부터 0으로 채워진다. 지정한 자릿수보다 크다면 아무런 영향을 받지 않는다.