MySQL的enum与set约束

enum和set可以指定字段只可以取一系列给定的值。


enum
枚举的值必须是打引号的字符类型的值

CREATE TABLE shirts (
    name VARCHAR(40),
    size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);

1 每个枚举值都有一个索引:

  • 列出的元素被分配从1开始的索引值。
  • 空字符串作为错误值的索引值为0。可以使用select语句找出那些被指定无效枚举值的数据行。
SELECT * FROM tbl_name WHERE enum_col=0;
  • NULL的索引为NULL。
  • 这里的索引只是指出枚举表里该元素的位置,和表索引不同。

2 最多可以有65535个不同的元素值(实际限制小于3000)。
3 枚举值不能是0或空字符串(虽然存在特殊情况)
4 For a column defined as ENUM(‘a’,’b’,’c’), values such as ”, ‘d’, or ‘ax’ are invalid and are rejected.每一行的这个值只能从枚举值中选一个
5 当创建表时,ENUM成员值的尾部空格将自动被删除。


set
SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)隔开,所以SET成员值本身不能包含逗号。

对于一指定为SET(‘one’, ‘two’) NOT NULL的列可以有下列取值:
’ ’
‘one’
‘two’
‘one,two’

1 一个set最多可指定64个不同的值。重复的值定义中会引起警告,或者错误如果严格启用SQL模式。
2 如上面的’one,two’例子,可以从set所指定的值中选择多个。
3 当创建表时,SET成员值的尾部空格将自动被删除.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值