关于MYSQL中的boolean值问题

关于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)


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、对于第一个问题,首先同学要知道mysql中是没有boolean类型的,所以也就没有数值约束
MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1),时需要自己遵循的。

2、对于第二个问题, tinyint  存储占1个字节,tinyint 表示的范围是0-255之间的数字。所以12是可以进行插入的。

例如插入12000,就会出现报错信息哦,具体如下:

http://img1.sycdn.imooc.com//climg/5e0da5060983605b05140254.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • jia_蛙 提问者 #1
    括号里的数字代表长度,但是我们存储的数字不能超过数值类型它所能接收的范围 tinyint(4) 如果我表示一个0-255之间的数字 配合ZEROFILL 可以起到填充效果是吗
    2020-01-02 18:19:33
  • 好帮手慕酷酷 回复 提问者 jia_蛙 #2
    同学你好,是的,你的理解是正确的。如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2020-01-02 19:22:19
  • jia_蛙 提问者 回复 好帮手慕酷酷 #3
    谢谢老师!
    2020-01-02 20:17:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师