Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 INT(7)의 의미: 표시 너비와 ZEROFILL 완벽 이해

INT(7)란 무엇인가?

MySQL에서 INT(7)처럼 괄호 안에 숫자를 지정하면 이는 표시 너비(display width)를 의미합니다. 중요한 점은 이 숫자가 실제 저장 용량에는 아무런 영향을 주지 않는다는 것입니다. MySQL의 INT 타입은 항상 4바이트를 차지하며, 저장 가능한 값의 범위도 -2147483648부터 2147483647까지로 동일합니다.

즉, INT(7)과 INT(11)은 저장 구조나 값의 범위 면에서 완전히 같습니다. 다만 괄호 안의 숫자는 주로 ZEROFILL 옵션과 함께 사용될 때 의미를 가집니다.

ZEROFILL로 표시 너비 확인하기

INT(7)이 실제로 어떻게 동작하는지 이해하기 위해, zerofill 옵션이 적용된 컬럼을 가진 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table DisplayInt
-> (
-> Number int(7) zerofill
-> );
Query OK, 0 rows affected (1.25 sec)

이제 insert 명령어를 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DisplayInt values(1);
Query OK, 1 row affected (0.12 sec)

mysql> insert into DisplayInt values(12);
Query OK, 1 row affected (0.16 sec)

mysql> insert into DisplayInt values(1234);
Query OK, 1 row affected (0.19 sec)

mysql> insert into DisplayInt values(12345);
Query OK, 1 row affected (0.10 sec)

mysql> insert into DisplayInt values(1234567);
Query OK, 1 row affected (0.18 sec)

select 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DisplayInt;

실행 결과는 다음과 같습니다.

+---------+
| Number  |
+---------+
| 0000001 |
| 0000012 |
| 0012345 |
| 1234567 |
+---------+
5 rows in set (0.00 sec)

결과 분석

출력 결과를 보면 흥미로운 패턴을 확인할 수 있습니다. 값이 7자리보다 짧으면 앞부분이 0으로 채워져 정확히 7자리로 표시됩니다. 예를 들어 1은 0000001로, 12345는 0012345로 출력됩니다. 반면 이미 7자리인 1234567은 그대로 표시됩니다.

만약 7자리를 초과하는 값을 입력하더라도 값 자체는 잘리지 않고 전체가 그대로 저장 및 표시됩니다. 이것이 바로 표시 너비가 저장 용량이나 값의 범위에 영향을 주지 않는다는 것을 보여주는 핵심 포인트입니다.

정리

  • INT(7)의 숫자 7은 표시 너비일 뿐, 저장 크기(4바이트)나 값 범위(-2147483648 ~ 2147483647)에는 영향이 없습니다.
  • ZEROFILL 옵션과 함께 사용하면 지정된 자릿수보다 짧은 숫자 앞을 0으로 채워 표시합니다.
  • 참고로 ZEROFILL을 사용하면 해당 컬럼은 자동으로 UNSIGNED 속성을 갖게 되므로 음수는 저장할 수 없습니다.