2021-03-25 10:38:52

enum이라는 데이터 타입은 조금 독특합니다. 어떤 컬럼의 데이터 타입이 만약 enum이라면 컬럼 정의시 열거된 값들만 입력이 가능해집니다. 

 

예를 들기 위해 우선 다음과 같은 테이블을 생성했습니다. 

 

CREATE TABLE person (
    id tinyint(1) NOT NULL AUTO_INCREMENT,
    name char(4) NOT NULL,
    favorite_color enum('파랑', '빨강', '초록') NOT NULL,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

여기서 favorite_color라는 이름의 컬럼의 데이터 타입은 enum으로 되어 있습니다. 그 안에는 '파랑', '빨강', '초록'이 담겨 있습니다. 이 뜻은 favorite_color 컬럼은 저 셋의 입력만 허용한다는 뜻입니다. 만약 '검정', '노랑'과 같이 열거되어 있지 않은 값을 넣으면 에러가 뜹니다. 

 

 

보시다시피 파랑, 빨강, 초록은 문제없이 입력되었는데, 노랑을 입력하려고 하자 error가 떴습니다. 

 

ERROR 1265 (01000): Data truncated for column 'favorite_color' at row 1

 

person 테이블을 조회해보니 에러가 떴던 마지막 쿼리는 역시 반영되지 않았습니다. 

 

 

이처럼 enum 데이터 타입은 값의 입력을 특정 몇 개의 값들로 제한하고 싶을 때 사용할 수 있습니다.