데이터베이스를 운영하다 보면 처음에 설정한 varchar 컬럼의 길이가 부족해지는 경우가 자주 발생합니다. 예를 들어 이름 필드를 varchar(10)으로 만들었는데 더 긴 문자열을 저장해야 한다면, 테이블을 새로 만들 필요 없이 간단한 ALTER 문 하나로 해결할 수 있습니다.
1. 테스트용 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다. 아래 테이블에는 두 개의 varchar 타입 컬럼이 포함되어 있습니다.
mysql> create table DemoTable
(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserFirstName varchar(10),
UserLastName varchar(20) ,
UserAge int
);
Query OK, 0 rows affected (0.96 sec)2. 현재 테이블 구조 확인하기
DESC 명령어를 사용하면 테이블의 구조를 확인할 수 있습니다.
mysql> desc DemoTable;
실행 결과는 다음과 같습니다.
+---------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+-------------+------+-----+---------+----------------+ | UserId | int(11) | NO | PRI | NULL | auto_increment | | UserFirstName | varchar(10) | YES | | NULL | | | UserLastName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | +---------------+-------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)
3. ALTER TABLE로 varchar 길이 늘리기
컬럼 길이를 늘리려면 ALTER TABLE ... MODIFY 구문을 사용합니다. 아래 쿼리는 UserFirstName 컬럼을 varchar(10)에서 varchar(40)으로 변경하는 예제입니다.
mysql> alter table DemoTable modify UserFirstName varchar(40); Query OK, 0 rows affected (0.23 sec) Records: 0 Duplicates: 0 Warnings: 0
쿼리가 정상적으로 실행되면 'Query OK' 메시지가 출력됩니다. 기존 데이터는 그대로 유지되며, 저장된 값이 새 길이보다 작다면 데이터 손실 없이 안전하게 확장됩니다.
4. 변경 결과 확인하기
DESC 명령어로 테이블 구조를 다시 조회하여 변경 사항을 확인해 보겠습니다.
mysql> desc DemoTable;
UserFirstName 컬럼의 타입이 varchar(10)에서 varchar(40)으로 성공적으로 변경된 것을 확인할 수 있습니다.
+---------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+-------------+------+-----+---------+----------------+ | UserId | int(11) | NO | PRI | NULL | auto_increment | | UserFirstName | varchar(40) | YES | | NULL | | | UserLastName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | +---------------+-------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)
정리 및 주의사항
MySQL에서 varchar 컬럼의 길이를 늘리는 방법은 매우 간단합니다. 핵심 문법은 다음과 같습니다.
ALTER TABLE 테이블명 MODIFY 컬럼명 varchar(새로운_길이);
다만 몇 가지 주의할 점이 있습니다. 첫째, 길이를 줄일 때는 기존 데이터가 잘릴 수 있으므로 반드시 백업 후 진행해야 합니다. 둘째, 대용량 테이블의 경우 ALTER 작업 중 잠금(lock)이 발생할 수 있으므로 트래픽이 적은 시간대에 실행하는 것이 좋습니다. 셋째, MySQL 5.6 이상에서는 온라인 DDL 기능을 지원하여 서비스 중단 없이 스키마 변경이 가능한 경우도 많습니다.