1. ENUM类型
ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围以列表的形式指定,其基本形式如下:
属性名 ENUM(‘值1’, ‘值2’, …, ‘值n’)
其中,“属性名”参数指字段的名称,“值n”参数表示列表中的第n个值。ENUM类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。如果数据值列表在255个以内,那么一个字节就够,如果超过255但是小于65535,那么系统采用两个字节保存。列表中的每个值独有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值。默认编号从1开始!
Enum(‘男’,’女’,‘选择保密’) # ‘男’=>1 ‘女’=>2 ‘选择保密’=> 3
mysql> use test; #选择数据库test
mysql> create table enum_test (e_enum enum('男','女','选择保密') ); #创建表
mysql> insert into enum_test values('男'); #插入记录,必须是enum 选项中的值
mysql> insert into enum_test values(1); #插入记录可以用数值表示
mysql> select e_enum + 0 from enum_test ; #查询enum 选项对应的整数值
创建enum_test表
插入数据,可以指定1(‘男’), 或者2(‘女’), 或者3(‘选择保密’), 但一次只能选择一个
如果ENUM类型加上了NOT NULL属性,其默认值为取值列表的第一个元素。如果不加NOT NULL属性,ENUM类型将允许插入NULL,而且NULL为默认值。
查询e_enum对应的整数值
2. SET类型
在创建表时,SET类型的取值范围就以列表的形式指定了,其基本形式如下:
属性名 SET(‘值1’, ‘值2’, …, ‘值n’)
其中,属性名参数指字段的名称,“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是由64个元素构成的组合。
mysql> use test; #选择数据库test
mysql> create table set_test (s_set set('篮球','足球','听音乐','游戏') ); #创建表
mysql> insert into set_test values( '足球,游戏' ); #插入记录,必须是enum 选项中的值
mysql> insert into set_test values(9); #插入相应位效果等同,9 =>1001 选择1,4
mysql> select interest+0 from set_test ; #以整数的方式查询
以整数的方式查询插入数据对应的十进制整数