티스토리 뷰

개발/DB

[mysql] 컬럼 타입 INT 괄호 옵션

Jaeyeon Baek 2015.12.01 12:17


테이블 생성시에 INT(11) 등으로 괄호 옵션을 주는 경우가 있다.


주변을 보면 의미를 제대로 알지 못하고 쓰는 경우가 종종 있다. 


보통은 괄호안의 숫자는 자리수를 나타내는 것으로 많이 알고 있는데, 사실은 그렇지 않다.


실제 의미를 위해서는 zerofill 이라는 옵션과 함께 사용되어야 한다. 그렇지 않은 경우에는 무의미하다.


zerofill은 말 그대로 0을 채우라는 의미고, 즉 괄호안의 숫자만큼 빈칸을 0으로 채우라는 의미다.


일단 테스트를 위해 아래와 같은 테이블을 생성한다.

create table TEST(seq INT(11) not null auto_increment primary key, \

oops1_fillzero INT(1) zerofill, \

oops1_nozero INT(1) , \

oops2_fillzero INT(2) zerofill, \

oops2_nozero INT(2) , \

oops3_fillzero INT(3) zerofill, \

oops3_nozero INT(3) \

);


생성 된 테이블은 아래와 같다.



괄호의 사이즈를 1~3 까지 만들었으며, 각각 zerofill 옵션이 포함된 컬럼과 포함되지 않은 컬럼 2개씩, 


총 6개의 컬럼을 생성했다.


그리고 모든 컬럼에 숫자 1을 모두 insert 시켰다.

insert TEST value ('', 1,1,1,1,1,1);


테스트 결과는 아래와 같다.



테스트 결과처럼 zerofill 옵션이 없는 컬럼의 결과는 모두 동일하다.


또한 zerofill 옵션이 있는 컬럼은 괄호안의 숫자만큼 빈 자리수를 0으로 채우고 있음이 확인된다.



대수롭지 않게 넘길 수도 있는 설정이지만.. 


데이터 양이 많아지고 테이블 크기가 커지면 언제나 최적화된 Query와 나아가 테이블 구조를 찾게된다.


MySQL 내부 구조(코드 레벨)를 알지 못하는 상태에서는.. 차이가 없다고 말할 수 없으니 정확히 쓰는 것이 좋겠다.


(설령 아무 차이가 없다면, 가독성을 위해서라도ㅎㅎㅎ)


댓글
댓글쓰기 폼