MySQL中的enum类型有什么优点?

刚开始用MYSQL,一直没注意到这个类型,它有什么优点?或者说如果存储内容都是短字符串的话,它跟varchar有何区别?

阅读 15.7k
6 个回答

例如下面两个字段:

name varchar(50) , 
sex  enum('male' , 'female' , 'both' , 'unknow')

name 字段可以插入任意字符串。

sex 字段只允许插入 male , female , both , unknow 中的其中之一,不在范围内的值会报错。

enum 相比较 varchar 就更加规范些,你在程序中限定也一样可以做到。

对于性能比较的话,就得等待高手来解答了.....

Enum 好处让值取在几个值范围内

查询string和enum速度上差不多,用到enum或set就是逻辑上的需要吧。。。

enum在底层的存储方式是以整型进行存储的
比如这样的字段
sex enum('male' , 'female' , 'both' , 'unknow')
在查询时
where sex='male'
和where sex=1是等效的

enum 在数据库非严格模式有坑 会允许 null 和 '' 插入
建议数据库连接时设置模式

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,STRICT_ALL_TABLES
推荐问题
宣传栏