Backend/JavaScript,NodeJS, Express

MYSQL의 int() 괄호 안의 숫자 의미는 무엇일까?

jellylucy 2021. 11. 16. 11:06

테이블을 생성할 때 INT() 괄호 안에 숫자를 넣어서 만들었다. 

나는 괄호 안의 숫자가 사용할 수 있는 INT 형 범위라고 생각했다. 

INT(1)이라면, 0~1 아니면 1의 자리 숫자의 INT 형들..

 

하지만 INT(1)로 생성한 값안에 100도 들어가는 것을 보았다. 

그럼 괄호안의 숫자는 무슨 의미인가?

 

https://dev.mysql.com/doc/refman/8.0/en/numeric-types.html

 

MySQL :: MySQL 8.0 Reference Manual :: 11.1 Numeric Data Types

MySQL supports all standard SQL numeric data types. These types include the exact numeric data types (INTEGER, SMALLINT, DECIMAL, and NUMERIC), as well as the approximate numeric data types (FLOAT, REAL, and DOUBLE PRECISION). The keyword INT is a synonym

dev.mysql.com

INT의 괄호는 보여지는 숫자의 개수의 제약을 의미하는 것이 아니다.

INT의 괄호 옵션은 ZEROFILL을 위한 것이다.

대부분의 숫자형 데이터 타입은 옵션으로 ZeroFill이라는 것을 가지게 되는데,

화면에 숫자를 표시할 때 숫자 왼쪽에 0을 붙이라는 뜻이다. 

즉, INT(5) ZeroFill이라고 정의된 필드에서 저장된 값 3을 불러온다면, 00003과 같이 표시된다.

 

즉, INT의 괄호 옵션 기능은 ZeroFill에서 0이 채워지게 되는 개수이고,

실제 저장공간 및 입력 가능 한계는 동일하다는 의미이다!

 

NT(1), INT(5), INT(9), INT(11)에 들어가는 값은 동일하며,
INT(1) ZEROFILL, INT(5) ZEROFILL, INT(9) ZEROFILL, INT(11) ZEROFILL 에서만,
0이 들어가는 개수에 차이가 있음을 볼 수 있다.