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

MySQL에서 기존 데이터를 손상시키지 않고 VARCHAR 컬럼 크기를 안전하게 늘리는 방법

MySQL에서 이미 존재하는 컬럼의 VARCHAR 크기를 늘릴 때는 ALTER TABLE 문과 CHANGE 명령어를 사용하면 됩니다. 이 방법의 가장 큰 장점은 테이블 구조만 변경될 뿐, 기존에 저장된 데이터는 전혀 손상되지 않는다는 점입니다.

기본 문법

alter table yourTableName change yourColumnName yourColumnName dataType;

컬럼 이름을 두 번 반복해서 작성하는 이유는 CHANGE 명령어가 컬럼 이름 변경과 데이터 타입 변경을 동시에 처리하기 때문입니다. 이름을 그대로 유지하고 싶다면 기존 이름을 두 번 적어주면 됩니다.

예제 테이블 생성

먼저 VARCHAR(200) 크기의 단일 컬럼을 가진 테이블을 생성해 보겠습니다.

mysql> create table IncreaseVarcharDemo
    -> (
    -> StudentId varchar(200)
    -> );
Query OK, 0 rows affected (0.60 sec)

데이터 삽입 및 조회

테이블에 샘플 레코드를 하나 삽입합니다.

mysql> insert into IncreaseVarcharDemo values('John123');
Query OK, 1 row affected (0.16 sec)

저장된 데이터를 조회하여 정상적으로 들어갔는지 확인합니다.

mysql> select *from IncreaseVarcharDemo;
+-----------+
| StudentId |
+-----------+
| John123   |
+-----------+
1 row in set (0.00 sec)

VARCHAR 크기를 200에서 1000으로 변경

이제 CHANGE 명령어를 사용해 VARCHAR 크기를 200에서 1000으로 확장합니다.

mysql> alter table IncreaseVarcharDemo change StudentId StudentId varchar(1000);
Query OK, 0 rows affected (0.18 sec)
Records: 0 Duplicates: 0 Warnings: 0

실행 결과의 'Records: 0'이라는 메시지는 기존 데이터가 삭제되거나 변경되지 않았다는 의미입니다. 즉, ALTER 작업은 테이블 구조만 수정하며 저장된 레코드에는 어떠한 영향도 주지 않습니다.

변경 결과 확인

DESC 명령어로 컬럼 정보를 조회하면 VARCHAR 크기가 정상적으로 늘어난 것을 확인할 수 있습니다.

mysql> desc IncreaseVarcharDemo;
+-----------+---------------+------+-----+---------+-------+
| Field     | Type          | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| StudentId | varchar(1000) | YES  |     | NULL    |       |
+-----------+---------------+------+-----+---------+-------+
1 row in set (0.03 sec)

참고: MODIFY 명령어 활용

컬럼 이름을 변경할 필요가 없다면 MODIFY 명령어를 사용하는 것이 더 간결합니다.

alter table yourTableName modify yourColumnName varchar(1000);

두 방법 모두 기존 데이터를 안전하게 보존한 상태로 컬럼 크기를 확장할 수 있습니다. 다만 컬럼 크기를 줄이는 경우에는 현재 저장된 데이터 길이보다 작아지면 오류가 발생하거나 데이터가 잘릴 수 있으므로 주의가 필요합니다.