MySQL에서 INT를 VARCHAR로 안전하게 변환하기
MySQL에서는 ALTER TABLE 명령어를 사용하면 기존 데이터를 잃지 않고 Integer(INT) 타입의 컬럼을 VARCHAR 타입으로 변환할 수 있습니다. 이 글에서는 실제 예제를 통해 변환 과정을 단계별로 살펴보겠습니다.
1단계: 테스트용 테이블 생성
먼저 연습용 테이블을 생성합니다.
mysql> create table DemoTable
(
UserId int,
UserFirstName varchar(20),
UserLastName varchar(20),
UserAge int
);
Query OK, 0 rows affected (0.73 sec)
2단계: 테이블 구조 확인
DESC 명령어로 현재 테이블의 구조를 확인합니다.
mysql> desc DemoTable;
실행 결과는 다음과 같습니다.
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| UserId | int(11) | YES | | NULL | |
| UserFirstName | varchar(20) | YES | | NULL | |
| UserLastName | varchar(20) | YES | | NULL | |
| UserAge | int(11) | YES | | NULL | |
+---------------+-------------+------+-----+---------+-------+
4 rows in set (0.17 sec)
현재 UserId 컬럼은 int(11) 타입으로 정의되어 있는 것을 확인할 수 있습니다.
3단계: ALTER TABLE로 데이터 타입 변경
이제 CHANGE 절을 사용하여 UserId 컬럼의 데이터 타입을 varchar(20)으로 변경합니다. 이때 기존에 저장된 데이터는 그대로 유지됩니다.
mysql> alter table DemoTable change UserId UserId varchar(20);
Query OK, 0 rows affected (1.35 sec)
Records: 0 Duplicates: 0 Warnings: 0
4단계: 변경 결과 확인
다시 DESC 명령어로 테이블 구조를 확인합니다.
mysql> desc DemoTable;
실행 결과는 다음과 같습니다.
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| UserId | varchar(20) | YES | | NULL | |
| UserFirstName | varchar(20) | YES | | NULL | |
| UserLastName | varchar(20) | YES | | NULL | |
| UserAge | int(11) | YES | | NULL | |
+---------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
UserId 컬럼이 성공적으로 varchar(20)으로 변경된 것을 확인할 수 있습니다.
참고 사항
- MODIFY 절 사용: 컬럼 이름을 그대로 유지한다면
ALTER TABLE DemoTable MODIFY UserId varchar(20);처럼 MODIFY 절을 사용해도 동일한 결과를 얻을 수 있습니다. - VARCHAR 길이 설정: 새로 지정하는 VARCHAR 길이는 저장된 숫자 값의 자릿수보다 크거나 같아야 합니다. 너무 짧게 지정하면 데이터가 잘릴 수 있습니다.
- 사전 백업 권장: 운영 환경에서 스키마를 변경하기 전에는 반드시 테이블을 백업하거나 트랜잭션 내에서 작업을 검증하는 것이 안전합니다.
이처럼 MySQL의 ALTER TABLE 명령어를 활용하면 몇 초 만에 간단히 데이터 타입을 변환할 수 있으며, 기존 데이터는 손상 없이 그대로 보존됩니다.