MySQL에서 ALTER MODIFY 명령어를 사용하면 ENUM 데이터 타입으로 선언된 컬럼에 새로운 값을 손쉽게 추가할 수 있습니다.
ENUM 컬럼에 값 추가 시 주의사항
가장 중요한 점은 기존에 정의되어 있던 ENUM 값들을 반드시 그대로 유지해야 한다는 것입니다. 새로운 값을 추가할 때 기존 값을 생략하면 해당 값들은 삭제되므로, 새 값을 추가하면서 기존 ENUM 값도 함께 명시적으로 작성해 주어야 합니다.
기본 문법
새로운 ENUM 값을 추가하는 문법은 다음과 같습니다.
ALTER TABLE 테이블이름 MODIFY COLUMN ENUM컬럼이름
ENUM('기존값1','기존값2',........N,'새로운값1','새로운값2',.....N);예제 테이블 생성하기
문법을 실제로 이해하기 위해 예제 테이블을 먼저 생성해 보겠습니다. 아래 쿼리를 실행합니다.
mysql> create table AddingNewValueToEnumColumn
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Colors ENUM('RED','GREEN','BLUE'),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.64 sec)위 쿼리는 자동 증가하는 Id 컬럼을 기본 키로 가지며, 'RED', 'GREEN', 'BLUE' 세 가지 값만 허용하는 Colors라는 ENUM 컬럼을 포함한 테이블을 만듭니다.
테이블 DDL 확인하기
생성된 테이블의 구조(DDL)를 확인하려면 show create 명령어를 사용합니다.
mysql> show create table AddingNewValueToEnumColumn\G
실행 결과는 다음과 같습니다.
*************************** 1. row ***************************
Table − AddingNewValueToEnumColumn
Create Table − CREATE TABLE `addingnewvaluetoenumcolumn` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Colors` enum('RED','GREEN','BLUE') DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci
1 row in set (0.00 sec)출력 결과를 보면 'Colors' ENUM 컬럼에는 현재 'RED', 'GREEN', 'BLUE' 세 가지 값만 정의되어 있는 것을 확인할 수 있습니다.
새로운 ENUM 값 추가하기
이제 'YELLOW', 'ORANGE', 'PINK' 세 가지 새로운 색상 값을 추가해 보겠습니다. 앞서 설명한 ALTER 명령어를 사용하며, 기존 값들도 모두 포함해서 작성하는 것이 핵심입니다.
mysql> ALTER TABLE addingnewvaluetoenumcolumn MODIFY COLUMN Colors
-> ENUM('RED','GREEN','BLUE','YELLOW','ORANGE','PINK');
Query OK, 0 rows affected (0.17 sec)
Records − 0 Duplicates − 0 Warnings − 0쿼리가 성공적으로 실행되었으며, 에러나 경고 없이 처리된 것을 확인할 수 있습니다.
변경 결과 확인하기
새로운 값이 제대로 추가되었는지 확인하려면 DESC 명령어로 테이블 구조를 조회합니다.
DESC 테이블이름;
예제 테이블에 적용해 보겠습니다.
mysql> desc AddingNewValueToEnumColumn;
실행 결과는 다음과 같습니다.
+--------+-----------------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------------------------------------------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| Colors | enum('RED','GREEN','BLUE','YELLOW','ORANGE','PINK') | YES | | NULL | |
+--------+-----------------------------------------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)결과를 보면 Colors 컬럼의 ENUM 타입에 'YELLOW', 'ORANGE', 'PINK'가 성공적으로 추가된 것을 확인할 수 있습니다.
정리
MySQL에서 ENUM 컬럼에 새로운 값을 추가하는 작업은 ALTER TABLE과 MODIFY COLUMN을 조합하여 수행합니다. 이때 반드시 기존 ENUM 값을 모두 포함한 상태에서 새로운 값을 뒤에 나열해야 기존 데이터의 무결성이 유지됩니다. 변경 후에는 DESC 명령어로 결과를 검증하는 습관을 들이면 안전하게 스키마를 관리할 수 있습니다.