MySQL에서는 ALTER 문 하나에 ADD와 CHANGE를 동시에 사용할 수 있습니다. 이를 통해 새로운 컬럼을 추가하면서 기존 컬럼의 이름이나 데이터 타입을 변경할 수 있습니다.
1. 테스트용 테이블 생성
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> Name varchar(100),
-> Age int
-> );
Query OK, 0 rows affected (0.84 sec)2. 테이블 구조 확인
DESC 명령어로 테이블 구조를 확인합니다.
mysql> desc DemoTable;
출력 결과
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | Name | varchar(100) | YES | | NULL | | | Age | int(11) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 2 rows in set (0.25 sec)
현재 테이블에는 Name과 Age 두 개의 컬럼만 존재합니다.
3. ALTER 문으로 ADD와 CHANGE 함께 사용하기
이제 하나의 ALTER 문을 사용해 다음 작업을 한 번에 수행해 보겠습니다.
- ADD: 자동 증가 기본 키 컬럼
Id추가 - ADD ... AFTER:
Age컬럼 뒤에CountryName컬럼 추가 - CHANGE:
Name컬럼의 이름을FirstName으로 변경하고 타입도 varchar(200)으로 수정
mysql> alter table DemoTable -> add column Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> add column CountryName varchar(100) after Age, -> change column Name FirstName varchar(200); Query OK, 0 rows affected (1.51 sec) Records: 0 Duplicates: 0 Warnings: 0
4. 변경된 테이블 구조 확인
변경 후 테이블 구조를 다시 확인합니다.
mysql> desc DemoTable;
출력 결과
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | FirstName | varchar(200) | YES | | NULL | | | Age | int(11) | YES | | NULL | | | CountryName | varchar(100) | YES | | NULL | | | Id | int(11) | NO | PRI | NULL | auto_increment | +-------------+--------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)
정리
위 결과에서 볼 수 있듯이, 하나의 ALTER 문 안에서 여러 작업을 쉼표(,)로 구분하여 실행할 수 있습니다.
ADD COLUMN은 새로운 컬럼을 추가하며,AFTER절을 사용하면 특정 컬럼 뒤에 위치시킬 수 있습니다.CHANGE COLUMN은 기존 컬럼의 이름과 데이터 타입을 동시에 변경할 수 있습니다.AUTO_INCREMENT PRIMARY KEY옵션을 함께 지정하면 자동 증가 기본 키 컬럼도 손쉽게 추가할 수 있습니다.
이처럼 MySQL의 ALTER 문은 테이블 구조를 유연하게 변경할 수 있는 강력한 도구입니다.