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

MySQL ENUM 컬럼에 새 값(멤버) 추가하는 방법 – ALTER TABLE 실전 가이드

MySQL에서 ENUM 타입 컬럼에 새로운 멤버(값)를 추가하려면 ALTER TABLE 명령어와 함께 MODIFY COLUMN 절을 사용하면 됩니다. 이때 중요한 점은 기존에 정의된 값들을 순서 그대로 유지한 채, 새로운 값들을 뒤에 나열해야 한다는 것입니다.

기본 문법

ALTER TABLE yourTableName
MODIFY COLUMN yourColumnName
ENUM('기존값1','기존값2',...,'새값1','새값2',...);

만약 기존 값의 순서를 바꾸거나 중간에 새 값을 삽입하면, ENUM은 내부적으로 정수 인덱스로 저장되기 때문에 기존 데이터가 다른 값으로 잘못 해석될 수 있으니 반드시 주의해야 합니다.

예제 테이블 생성하기

문법을 이해하기 위해 먼저 예제용 테이블을 만들어 보겠습니다.

mysql> CREATE TABLE EnumDemo
    -> (
    -> AllColors ENUM('RED','GREEN')
    -> );
Query OK, 0 rows affected (0.66 sec)

현재 AllColors 컬럼에는 'RED'와 'GREEN' 두 개의 멤버만 존재합니다.

ENUM 멤버 추가하기

여기에 'YELLOW'와 'BLUE'라는 새로운 멤버를 추가하려면 아래와 같이 ALTER TABLE ... MODIFY COLUMN 쿼리를 실행합니다.

mysql> ALTER TABLE EnumDemo
    -> MODIFY COLUMN AllColors ENUM('RED','GREEN','YELLOW','BLUE');
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0

변경 결과 확인하기

테이블 구조가 실제로 업데이트되었는지 확인하려면 SHOW CREATE TABLE 문을 사용합니다.

mysql> SHOW CREATE TABLE EnumDemo;

출력 결과

+----------+----------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                   |
+----------+----------------------------------------------------------------------------------------------------------------+
| EnumDemo | CREATE TABLE `enumdemo` (`AllColors` enum('RED','GREEN','YELLOW','BLUE') DEFAULT NULL) ENGINE=InnoDB           |
|          | DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci                                                             |
+----------+----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

실행 결과를 보면 'YELLOW'와 'BLUE'라는 두 개의 새로운 멤버가 성공적으로 추가된 것을 확인할 수 있습니다.

참고 사항

  • ENUM 값은 목록 끝에 추가할 경우 대부분 테이블 전체 재작성 없이 메타데이터만 변경되므로 처리 속도가 빠릅니다.
  • 반면 기존 값 사이에 새 값을 삽입하거나 삭제하면 내부 인덱스가 변경되어 전체 테이블이 재구성될 수 있습니다.
  • 컬럼에 이미 저장된 값이 수정 후 ENUM 목록에 존재하지 않으면 오류가 발생하거나(strict 모드) 빈 문자열로 대체될 수 있으니(non-strict 모드) 변경 전 데이터를 백업하는 것이 안전합니다.