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

MySQL BigInt(20)과 Int(20)의 차이점 완벽 정리

MySQL에서 int 타입은 4바이트 부호 있는 정수, 즉 32비트를 차지하며 최대 232개의 값을 저장할 수 있습니다. 반면 BigInt 타입은 8바이트 부호 있는 정수, 즉 64비트를 사용하므로 264개의 값을 저장할 수 있습니다.

괄호 안 숫자(20)의 의미

int(20)이나 BigInt(20)처럼 타입 뒤에 붙는 숫자는 저장 크기가 아니라 표시 폭(display width)을 나타냅니다. 즉, 이 숫자는 실제 저장 용량이나 값의 범위에는 영향을 주지 않으며, zerofill 옵션과 함께 사용될 때 숫자 앞을 0으로 채우는 역할을 합니다.

예제로 살펴보기

먼저 zerofill 옵션을 적용한 테이블을 생성해 보겠습니다. zerofill은 지정된 폭만큼 숫자 앞에 0을 채워 표시하는 기능입니다.

mysql> create table IntandBigint20Demo
-> (
-> Number int(20) zerofill,
-> Code BigInt(20) zerofill
-> );
Query OK, 0 rows affected (0.58 sec)

테이블 생성이 완료되면 레코드를 삽입합니다.

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

이제 SELECT 문을 사용하여 모든 레코드를 조회해 보겠습니다.

mysql> select *from IntandBigint20Demo;

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

+----------------------+----------------------+
| Number | Code |
+----------------------+----------------------+
| 00000000000000000987 | 00000000000000000987 |
+----------------------+----------------------+
1 row in set (0.00 sec)

결과 분석

출력 결과를 보면 숫자 앞부분이 0으로 채워진 것을 확인할 수 있습니다. 이는 int(20) zerofill에서 숫자 20이 값의 폭(width)을 의미한다는 것을 잘 보여줍니다. 원래 값인 987은 3자리이지만, 표시 폭이 20으로 지정되어 있기 때문에 나머지 자릿수가 0으로 채워져 총 20자리로 출력된 것입니다.

정리하면, int와 BigInt의 진짜 차이는 저장할 수 있는 값의 범위에 있으며, 괄호 안의 숫자는 단순히 표시 형식과 관련된 옵션일 뿐이라는 점을 기억하시기 바랍니다.