当前位置:嗨网首页>书籍在线阅读

09-小结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

+------+

SET和ENUM类型非常类似,也是一个字符串对象,里面可以包含0~64个成员。根据成员的不同,存储上也有所不同。

1~8成员的集合,占1个字节。

9~16成员的集合,占2个字节。

17~24成员的集合,占3个字节。

25~32成员的集合,占4个字节。

33~64成员的集合,占8个字节。

SET 和 ENUM 除了存储之外,最主要的区别在于 SET 类型一次可以选取多个成员,而ENUM则只能选一个。下面的例子在表t中插入了多组不同的成员:

Create table t (col set('a','b','c','d');

insert into t values('a,b'),('a,d,a'),('a,b'),('a,c'),('a');

mysql> select * from t;

+------+

| col |

| a,b |

| a,d |

| a,b |

| a,c |

| a |

+------+

5 rows in set (0.00 sec)

SET类型可以从允许值集合中选择任意1个或多个元素进行组合,所以对于输入的值只要是在允许值的组合范围内,都可以正确地注入到SET类型的列中。对于超出允许值范围的值例如('a,d,f ')将不允许注入到上面例子中设置的SET类型列中,而对于('a,d,a')这样包含重复成员的集合将只取一次,写入后的结果为“a,d”,这一点请注意。