mysql中set和enum类型变量小结

以一个实例来说明:

mysql>create table t1 (

id tinyint unsigned auto_increment not null ,
c1 SET('x','y','z') not null ,
c2 ENUM('one','two','three'),
primary key('id')
)engine=innodb ;
mysql> insert into t1 (c1,c2) values(1,1),(2,1),(3,1),(4,1)(5,1),(6,1),(7,1);
mysql> select * from t1;
+-------+------+----+
| c1 | c2 | id |
+-------+------+----+
| x | one | 1 |
| y | one | 2 |
| x,y | one | 3 |
| z | one | 4 |
| x,z | one | 5 |
| y,z | one | 6 |
| x,y,z | one | 7 |
+-------+------+----+
注意:此时插入下面这条值将报错
mysql> insert into t1 (c1,c2) values(8,1);
ERROR 1265 (01000): Data truncated for column 'c1' at row 1

备注:
SET类型,属于二进制字符串类型,集合型,以二进制的位数来表示集合中对应元素。超过set定义的数值范围(10进制),即set定义的元素个数n,
最大值为(2^(n+1) -1)。如上定义,则对应位数与元素关系为:
0001---->x
0010---->y
0100---->z
则c1的最大10进制数=2^4 -1 =7 ,超过此值将报错。

接下来验证ENUM()枚举型值

mysql> insert into t1 (c1,c2) values(1,2),(1,3);

注意:此时插入的值将报错
mysql> insert into t1 (c1,c2) values(1,4);
ERROR 1265 (01000): Data truncated for column 'c2' at row 1

备注:
ENUM类型,属于枚举型数据,每次只能选取其中一个元素。以10进制的数字对应enum中定义的元素位数,超过enum定义范围的将报错。

更多相关文章

  1. PHP OOP和MySQLi连接=致命错误:调用未定义的方法sqmyli::arrayQu
  2. MySQL 自定义函数.txt
  3. 使用jQuery排序,删除和追加元素在IE中不起作用
  4. 关于如何更好的监听元素属性的变化(转)
  5. C标准库中的函数定义在哪里?
  6. javascript判断数组和对象中是否存在某元素
  7. Dojo:不能在AccordionContainer.js中读取未定义的属性“h”。
  8. 获取下一个DOM元素的ID
  9. Crypto.js:在IE 11中未定义“Uint8ClampedArray”

随机推荐

  1. 在python中出现搜索项的打印行
  2. python基础编程_12_日期格式的使用和转换
  3. 从零开始部署Django生产环境(适用:《跟老齐
  4. python python 入门学习之网页数据爬虫cn
  5. AttributeError:'Flask'对象没有属性'logi
  6. UnicodeDecodeError: 'gb2312' codec can
  7. python输出斐波那契数列三角形
  8. 是否有一个类似于Python的“枚举”函数的
  9. Python之错误异常和文件处理
  10. 在java中调用python方法