MySQL 中的枚舉數據類型經常被用來存儲只有一些特定值的數據。由于 MySQL 的枚舉類型比較寬松,有時候可能會出現一些不應該出現的值,但是 MySQL 并不會報錯的情況。
CREATE TABLE fruits ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, color ENUM('red', 'yellow', 'green', 'purple') ); INSERT INTO fruits (name, color) VALUES ('banana', 'yellow'); INSERT INTO fruits (name, color) VALUES ('apple', 'red'); INSERT INTO fruits (name, color) VALUES ('grape', 'purple'); INSERT INTO fruits (name, color) VALUES ('watermelon', 'red');
例如,以上代碼創建了一個水果表,并定義了一個顏色枚舉類型,只能取 'red', 'yellow', 'green' 或 'purple' 這四種值。但是,如果我們插入一個不在枚舉類型中的值,比如 'blue':
INSERT INTO fruits (name, color) VALUES ('blueberry', 'blue');
MySQL 并不會報錯,而是將該值轉換成字符串 'blue' 存入枚舉類型中。如果我們查詢該記錄,會發現顏色是 'blue':
SELECT * FROM fruits WHERE name = 'blueberry';
因此,我們需要時刻注意 MySQL 的枚舉類型比較寬松,避免出現不應該出現的值。在設計表結構時,應該盡量將數據類型定義得更加嚴格,避免數據異常。