반응형

great-artist.tistory.com/84

 

mysql의 INT(11)의 괄호안의 숫자의 의미는 무엇일까?

숫자 컬럼에 INT를 선언할 경우 자동적으로 INT(11)이 입력된다. INT형 옆의 11이란 숫자는 입력된 값의 자릿수를 의미한다. 해당값은 ZEROFILL (이하 ZF) 속성이 지정됐을 경우에만 영향을 받는다. 즉 ZF

great-artist.tistory.com

 

숫자 컬럼에 INT를 선언할 경우 자동적으로 INT(11)이 입력된다. INT형 옆의 11이란 숫자는 입력된 값의 자릿수를 의미한다. 해당값은 ZEROFILL (이하 ZF) 속성이 지정됐을 경우에만 영향을 받는다. 즉 ZF 속성을 사용하지 않는다면 의미가 없다. 그렇다면 ZF의 기능은 무엇일까? 입력된 값의 자릿수를 일관되게 맞추려는 목적으로 사용된다. INT(5) 약 해당 컬럼에 입력된 값의 자릿수가 지정된 자릿수보다 작다면 좌측부터 0으로 채워진다. 만약 지정한 자릿수보다 크다면 아무런 영향을 받지 않는다.

 

 

테스트

 

테이블을 만들어서 테스트 해보자. INT형에 ZEROFILL값을 1, 2, 3, 4, 5, 11로 설정 ZF(ZEROFILL)에 체크한다. ZF에 체크를 하면 mysql은 자동적으로 UN(Unsigned) 속성을 추가한다.

 

 

 

테이블에 아래의 값을 입력해 보고 나서 테이블의 값을 확인해보자.

 

1

1

1

1

1

12

12

12

12

12

123

123

123

123

123

1234

1234

1234

1234

1234

12345

12345

12345

12345

12345

 

 

숫자값의 자릿수가 ZF값보다 작다면 왼쪽부터 비어있는 곳은 0으로 채워진다.

 

 

 

결론

MySQL은 자동적으로 UNSIGNED 속성을 추가한다. 좌측부터 0으로 채우려면 양수로만 값이 입력되어야 하기 때문이다. 추가로 ZF은 보여지는 형식을 정의 하는것이지 실제 저장되는 방식과는 무관하다. int형을 입력하면 자동적으로 INT(11)이 된다. 기본값이 11인 이유는 int형의 최대값이 10자리이기 때문으로 보인다. 11자리로 해놓으면 최대값에 도달한다고 하더라도 자릿수가 보기좋게 0부터 시작해서 정렬되기 때문으로 보인다.

 

 

StorageMinimum ValueMaximum Value(Bytes)(Signed/Unsigned)(Signed/Unsigned)

Type
INT 4 -2147483648 2147483647
    0 4294967295

 

 



출처: https://great-artist.tistory.com/84 [Good artists copy, great artists steal.]

반응형