ENUM是MySQL中一種數(shù)據(jù)類(lèi)型,它只能存儲(chǔ)預(yù)定義的值,相當(dāng)于在數(shù)值的基礎(chǔ)上添加了一層限制,防止數(shù)據(jù)不合規(guī)。
舉個(gè)例子,如果我們有一個(gè)“性別”字段需要存儲(chǔ),那么在定義表的時(shí)候就可以使用ENUM數(shù)據(jù)類(lèi)型:
CREATE TABLE user ( id INT(11) unsigned NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL DEFAULT '', gender ENUM('男', '女', '未知') NOT NULL DEFAULT '未知', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
這樣我們定義的gender字段就只能存儲(chǔ)‘男’、‘女’、‘未知’這三個(gè)值了,使用其他值就會(huì)報(bào)錯(cuò)。當(dāng)然,也可以不定義默認(rèn)值DEFAULT,這樣在插入數(shù)據(jù)時(shí)gender就必須有值了。
在SQL語(yǔ)句中,使用ENUM作為篩選條件也很容易:
SELECT * FROM user WHERE gender = '男';
這樣就可以查詢(xún)所有g(shù)ender為‘男’的用戶(hù)了。
總的來(lái)說(shuō),ENUM是一種簡(jiǎn)單但有效的方式來(lái)限制數(shù)據(jù)的輸入,確保數(shù)據(jù)的合規(guī)性。但是如果需要修改枚舉值,就需要改變表結(jié)構(gòu),這一點(diǎn)需要注意。
下一篇mysql cbo