MySQL에서는 ALTER TABLE 문과 MODIFY COLUMN 절을 활용하면 단일 쿼리만으로 여러 열의 데이터 유형을 한 번에 변경할 수 있습니다. 각 열마다 별도의 쿼리를 실행할 필요 없이, 하나의 ALTER TABLE 문 안에 MODIFY COLUMN 절을 여러 개 나열하면 됩니다.
기본 문법
여러 열의 유형을 단일 쿼리로 변경하는 기본 문법은 다음과 같습니다.
alter table yourTableName
modify column yourColumnName1 yourDataType1,
modify column yourColumnName2 yourDataType2,
.
.
N;
실습 예제
1단계: 테이블 생성
먼저 실습용 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id varchar(100),
FirstName text,
LastName text
);
Query OK, 0 rows affected (0.52 sec)
2단계: 테이블 구조 확인
테이블이 정상적으로 생성되었는지 DESC 명령으로 구조를 확인합니다.
mysql> desc DemoTable;
위 명령은 다음과 같은 결과를 출력합니다.
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| Id | varchar(100) | YES | | NULL | |
| FirstName | text | YES | | NULL | |
| LastName | text | YES | | NULL | |
+-----------+--------------+------+-----+---------+-------+
3 rows in set (0.09 sec)
현재 세 개의 열(Id, FirstName, LastName)이 모두 문자열 타입으로 정의되어 있는 것을 확인할 수 있습니다.
3단계: 여러 열의 유형 변경
이제 단일 쿼리를 사용해 Id 열은 int로, FirstName과 LastName 열은 varchar(50)으로 동시에 변경해 보겠습니다.
mysql> alter table DemoTable
modify column Id int,
modify column FirstName varchar(50),
modify column LastName varchar(50);
Query OK, 0 rows affected (1.63 sec)
Records: 0 Duplicates: 0 Warnings: 0
4단계: 변경 결과 확인
쿼리 실행 후 테이블 구조를 다시 확인해 보겠습니다.
mysql> desc DemoTable;
실행 결과는 다음과 같습니다.
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| Id | int(11) | YES | | NULL | |
| FirstName | varchar(50) | YES | | NULL | |
| LastName | varchar(50) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
정리
출력 결과에서 볼 수 있듯이, Id 열은 varchar(100)에서 int(11)로, FirstName과 LastName 열은 text에서 varchar(50)으로 성공적으로 변경되었습니다. 이처럼 ALTER TABLE 문 하나에 MODIFY COLUMN 절을 쉼표(,)로 구분하여 나열하면, 여러 번의 쿼리 실행 없이 한 번의 작업으로 여러 열의 데이터 유형을 효율적으로 수정할 수 있습니다.