关于MYSQL中的boolean值问题
mysql> CREATE TABLE TEST3( -> id INT PRIMARY KEY, -> bl boolean -> ); Query OK, 0 rows affected (0.42 sec)mysql> DESC test3; +-------+------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------+-------+| id | int(11) | NO | PRI | NULL | || bl | tinyint(1) | YES | | NULL | | +-------+------------+------+-----+---------+-------+ 创建上面这个表时,发现再mysql中会把boolean类型自动转换成tinyint(1), 接着我插入值 INSERT test3(bl) values(0); INSERT test3(id,bl) values(1,0); INSERT test3(id,bl) values(2,2); mysql> SELECT * FROM test3; +----+------+ | id | bl | +----+------+ | 0 | 0 | | 1 | 0 | | 2 | 2 | +----+------+ 3 rows in set (0.00 sec) 我再网上查询资料得到的是:mysql会把boolean替换成tinyint(1), MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE, boolean在MySQL里的类型为tinyint(1)老师我的疑问是: 1.资料说1和0分别代表true和false,而我插入数据的时候可以插入任意数值, 我想问一下MySQL在对于boolean值插入得时候是没有数值约束嘛? 这个需要我们自己遵循:1为true 0为false的规范嘛? 2.还有就是tinyint(1)中的1不是表示: 整型后面的数字表示最大宽度。 为什么我插入值12这种两位数它也能成功? mysql> INSERT test3(id,bl) values(3,12); Query OK, 1 row affected (0.04 sec) mysql> SELECT * FROM TEST3; +----+------+ | id | bl | +----+------+ | 2 | 2 | | 3 | 12 | +----+------+ 2 rows in set (0.00 sec)
14
收起
正在回答
1回答
同学你好,
1、对于第一个问题,首先同学要知道mysql中是没有boolean类型的,所以也就没有数值约束
MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1),时需要自己遵循的。
2、对于第二个问题, tinyint 存储占1个字节,tinyint 表示的范围是0-255之间的数字。所以12是可以进行插入的。
例如插入12000,就会出现报错信息哦,具体如下:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星