MySQL은 ENUM 멤버를 참조하기 위해 ENUM 값을 내부적으로 정수 키(인덱스 번호)로 저장합니다. ENUM 열에 정수 값을 저장하지 않는 주된 이유는 분명히 MySQL이 값이 아닌 인덱스를 참조하게 되고 그 반대의 경우도 마찬가지이기 때문입니다.
다음 예를 보면 명확하게 알 수 있습니다.
mysql> Create table enmtest(Val ENUM('0','1','2')); Query OK, 0 rows affected (0.18 sec) mysql> Insert into enmtest values('1'),(1); Query OK, 2 rows affected (0.19 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Select * from enmtest; +-----+ | Val | +-----+ | 1 | | 0 | +-----+ 2 rows in set (0.00 sec)
여기서 '1'을 문자열로 삽입했는데 실수로 따옴표 없이 숫자 1도 삽입했습니다. MySQL은 숫자 입력을 멤버 목록의 첫 번째 항목(예: 0)에 대한 내부 참조인 인덱스 값으로 혼란스럽게 사용합니다.
위 내용은 MySQL ENUM 열에 숫자를 저장하면 안되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!