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

MySQL에서 INT와 INTEGER의 차이점은 무엇일까?

MySQL 5.0 이상 버전에서 intinteger는 완전히 동일한 데이터 타입입니다. 즉, int는 integer의 동의어(synonym)이며, 두 타입 모두 내부적으로 int(11)로 표현됩니다. 아래 예제를 통해 두 데이터 타입이 실제로 동일하게 처리되는지 직접 확인해 보겠습니다.

INT 데이터 타입으로 테이블 생성하기

먼저 int 데이터 타입을 사용하는 테이블을 생성합니다.

mysql> create table IntDemo
    -> (
    -> Id int
    -> );
Query OK, 0 rows affected (1.04 sec)

DESC 명령어로 테이블 구조를 확인해 보겠습니다.

mysql> desc IntDemo;

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

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| Id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.06 sec)

컬럼 타입이 int(11)로 표시되는 것을 확인할 수 있습니다. int 타입은 부호 있는(signed) 정수 기준으로 -2147483648부터 2147483647까지의 값을 저장할 수 있습니다. 이제 최댓값과 최솟값을 각각 삽입해 보겠습니다.

mysql> insert into IntDemo values(2147483647);
Query OK, 1 row affected (0.20 sec)

mysql> insert into IntDemo values(-2147483648);
Query OK, 1 row affected (0.42 sec)

SELECT 문으로 저장된 모든 레코드를 조회합니다.

mysql> select *from IntDemo;

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

+-------------+
| Id          |
+-------------+
| 2147483647  |
| -2147483648 |
+-------------+
2 rows in set (0.00 sec)

INTEGER 데이터 타입으로 테이블 생성하기

이번에는 integer 데이터 타입을 사용하는 테이블을 생성해 보겠습니다.

mysql> create table IntegerDemo
   -> (
   -> Id integer
   -> );
Query OK, 0 rows affected (0.93 sec)

DESC 명령어로 테이블 구조를 확인합니다.

mysql> desc IntegerDemo;

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

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| Id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

integer 타입 역시 int와 동일한 범위의 값을 저장할 수 있습니다. 같은 방식으로 최댓값과 최솟값을 삽입해 보겠습니다.

mysql> insert into IntegerDemo values(2147483647);
Query OK, 1 row affected (0.11 sec)

mysql> insert into IntegerDemo values(-2147483648);
Query OK, 1 row affected (0.27 sec)

SELECT 문으로 모든 레코드를 조회합니다.

mysql> select *from IntegerDemo;

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

+-------------+
| Id          |
+-------------+
| 2147483647  |
| -2147483648 |
+-------------+
2 rows in set (0.00 sec)

결론

MySQL에서 int와 integer는 이름만 다를 뿐 기능적으로 완전히 동일한 데이터 타입입니다. 두 타입 모두 내부적으로 int(11)로 해석되며, 저장 가능한 값의 범위도 부호 있는 정수 기준 -2147483648 ~ 2147483647로 같습니다. 따라서 어느 쪽을 선택하더라도 성능이나 동작에 차이가 없으므로, 코드 일관성을 위해 프로젝트 내에서 한 가지 표기법으로 통일해 사용하는 것이 좋습니다.