从集合中选择一个值作为数据(单选)
- mysql> create table stu12(
- -> name varchar(20),
- -> sex enum('男','女','保密') # 枚举
- -> );
- Query OK, 0 rows affected (0.06 sec)
- -- 插入的枚举值只能是枚举中提供的选项
- mysql> insert into stu12 values ('tom','男');
- Query OK, 1 row affected (0.00 sec)
- -- 报错,只能插入男、女、保密
- mysql> insert into stu12 values ('tom','不告诉你');
- ERROR 1265 (01000): Data truncated for column 'sex' at row 1
复制代码 枚举值是通过整形数字来管理的,第一个值是1,第二个值是2,以此类推,枚举值在数据库存储的是整形数字。
- mysql> insert into stu12 values ('berry',2); -- 插入数字
- Query OK, 1 row affected (0.00 sec)
- mysql> select * from stu12;
- +-------+------+
- | name | sex |
- +-------+------+
- | tom | 男 |
- | berry | 女 |
- +-------+------+
- mysql> select * from stu12 where sex=2; -- 2表示第二个枚举值
- +-------+------+
- | name | sex |
- +-------+------+
- | berry | 女 |
- +-------+------+
- 1 row in set (0.00 sec)
复制代码 枚举优点:
- (1)、限制值
- (2)、节省空间
- (3)、运行速度快(整形比字符串运行速度快)
复制代码思考:已知枚举占用两个字节,所以最多可以有多少个枚举值? 答:2字节=16位,2^16^=65536,范围是(0-65535),由于枚举从1开始,所以枚举值最多有65535个
|