반응형
MySQL에서 int로 컬럼을 만들면 기본값으로 int(11)로 생성됩니다.
int가 표현할 수 있는 자릿수가 10자리이기 때문에 int(10)으로 생성될 거라고 생각했었는데,
왜 int(11)로 생기는지 궁금증이 생겨 찾아보니 정렬을 위한 여유공간 쯤으로 해석할 수 있었습니다.
(정확한 이유는 아직 찾는 중입니다...)
그리고 나머지 크기 int(1)~int(10) 또한 자릿수를 나타내기 위함을 확인할 수 있었습니다.
위에 생성한 테이블에 아래와 같이 데이터를 넣어 확인했습니다.
양수일 경우는 int(11)도 int(10)과 마찬가지로 10자리까지 밖에 적재되지 않습니다.
하지만, int(1)로 선언해도 10자리수를 사용할 수 있기 때문에, 다른 이유를 찾아보니
ZEROFILL을 사용하기 위함이였습니다.
아래와 같이 테이블을 ALTER 하여 ZEROFILL로 설정하니
앞에 unsigned가 붙게 되는데, 이는 양수일 경우에만 0으로 채워주기 때문입니다.
이제 데이터를 넣어 확인해보면 아래와 같이 설정한 자릿수에 미치지 못할 경우 0으로 채워지는 것을 확인할 수 있었습니다.
ZEROFILL은 실제 데이터 파일의 데이터를 다르게 보관하는 방법이 아니라 데이터를 보여줄 때 어떻게 보여줄 것인지에 관련된 내용입니다.
참조 : https://blogs.oracle.com/jsmyth/what-does-the-11-mean-in-int11
반응형
'- DB' 카테고리의 다른 글
[MySQL, Maria] 계정 생성 및 권한 부여 (0) | 2020.08.23 |
---|---|
[Oracle, MySQL, MSSQL] PROCEDURE (0) | 2020.07.14 |
[MyBatis] #, $ 차이 (0) | 2020.06.23 |
[MySQL] Incorrect string value (0) | 2020.06.15 |
[Oracle, MySQL] 시간 계산 (0) | 2020.04.10 |