首页 > 编程笔记 > MySQL笔记 阅读:9

mysql SET类型的用法(附带实例)

MySQL 中的 SET 是一个字符串对象,可以有 0 个或多个值。SET 列最多可以有 64 个成员,其值为表创建时规定的一个列值。

指定包括多个 SET 成员的 SET 列值时,各成员之间用逗号(,)隔开。语法格式如下:
SET('值1','值2',...,'值n')

与 ENUM 类型相同,SET 值在内部用整数表示,列表中每一个值都有一个索引编号。当创建表时,SET 成员值的尾部空格将自动被删除。与 ENUM 类型不同的是,ENUM 类型的字段只能从定义的多个列值中选择一个值插入,而 SET 类型的列可从定义的多个列值中选择多个字符的联合。

如果插入 SET 字段中的列值有重复,则 MySQL 自动删除重复的值;插入 SET 字段的值的顺序并不重要,MySQL 会在将这些值存入数据库时按照定义的顺序显示;如果插入了不正确的值,默认情况下,MySQL 将忽视这些值,并给出警告。

【实例】创建表 tmp11,定义 SET 类型的字段 s,取值列表为 ('a', 'b', 'c', 'd'),插入数据 ('a')、('a,b,a')、('c,a,d')、('a,x,b,y')。

1) 创建表 tmp11:
CREATE TABLE tmp11 ( s SET('a', 'b', 'c', 'd'));

2) 插入数据:
INSERT INTO tmp11 values('a'),( 'a,b,a'),('c,a,d');

3) 再次插入数据:
mysql>INSERT INTO tmp11 values ('a,x,b,y');
ERROR 1265 (01000): Data truncated for column 's' at row 1
由于插入了 SET 列不支持的值,因此 MySQL 给出错误提示。

4) 查看插入结果:
mysql> SELECT * FROM tmp11;
+-------+
| s     |
+-------+
| a     |
| a,b   |
| a,c,d |
+-------+
从结果中可以看到,对于 SET 来说:

相关文章