MySQL은 SQL 모드가 TRADITIONAL, STRICT_TRANS_TABLES 또는 STRICT_ALL_TABLES로 설정되지 않은 경우에만 열거를 위해 빈 값을 허용합니다. 그렇지 않으면 MySQL은 빈 값을 허용하지 않고 오류를 발생시킵니다. 각 열거 값에 인덱스 값이 있다는 것을 알고 있으므로 빈 값은 인덱스 값이 0입니다.
예시
mysql> SET SQL_MODE ='Traditional'; Query OK, 0 rows affected (0.00 sec) mysql> Insert into result(id, name,grade) values(100, 'Raman', ''); ERROR 1265 (01000): Data truncated for column 'Grade' at row 1
이제 SQL 모드를 변경한 후 다음과 같이 빈 문자열을 삽입할 수 있습니다. -
mysql> Set SQL_MODE =''; Query OK, 0 rows affected (0.00 sec) mysql> Insert into result(id, name, grade) values(100, 'Raman', ''); Query OK, 1 row affected, 1 warning (0.04 sec) mysql> select * from result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Raman | | +-----+-------+-------+ 1 row in set (0.00 sec)
MySQL은 ENUM 열에 NOT NULL을 지정하지 않은 경우에만 열거를 위해 NULL 값을 허용합니다. 각 열거형 값에 인덱스 값이 있다는 것을 알고 있으므로 NULL의 인덱스 값은 NULL입니다.
예시
mysql> Insert into result(id, name, grade) values(101, 'Rahul', NULL); Query OK, 1 row affected (0.04 sec)
위의 쿼리는 ENUM 컬럼 선언에 NOT NULL을 지정하지 않았기 때문에 NULL 값을 삽입합니다.
mysql> select * from result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Raman | | | 101 | Rahul | NULL | +-----+-------+-------+ 2 rows in set (0.00 sec)