前面几节Amy给大家分享了STE集合类型和枚举类型ENUM的测试数据,还没来得及看到的读者可以点击这里查看往期文章。之前看到一些平台上很多人咨询mysql是否提供布尔类型的问题。MySQL数据库确实提供布尔类型,此数据类型的关键字可以写成:布尔类型BOOL或布尔类型BOOLEAN,但是MySQL数据库数据类型的布尔类型是否也像其他数据库产品一样呢?本文就为大家揭开mysql布尔类型的真实面目。

(一)数据类型测试

(1). 布尔类型BOOL/BOOLEAN 与 微整型TINYINT

a). 创建测试表结构

root@localhost : test 05:12:49> CREATE TABLE boolean_test(ID INT NOT NULL AUTO_INCREMENT,->                           Online_Flag BOOL,->                           Lock_Flag BOOLEAN,->                           PRIMARY KEY(ID)->                           )ENGINE=InnoDB CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
Query OK, 0 rows affected (0.01 sec)

我们可以发现对于字段类型写成BOOL或者BOOLEAN,MySQL的SQL语法都是允许通过的,另外我们再通过SHOW命令查阅创建好的表结构:

*************************** 1. row ***************************Table: boolean_test
Create Table: CREATE TABLE `boolean_test` (`ID` int(11) NOT NULL AUTO_INCREMENT,`Online_Flag` tinyint(1) DEFAULT NULL,`Lock_Flag` tinyint(1) DEFAULT NULL,PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

小结:

我们对比手工输入创建表boolean_test的结构定义与数据库中查阅到表结构定义,可以发现二者的差别:

I.MySQL数据库将字段的数据类型BOOL/BOOLEAN默认地转换成TINYINT(1);

II.MySQL数据库自动完成的数据类型转换过程,没有给出任何错误或警告信息提示;

b). 测试数据的写入

root@localhost : test 05:12:58> INSERT INTO boolean_test(Online_Flag,Lock_Flag) VALUES(TRUE,FALSE);
Query OK, 1 row affected (0.00 sec)root@localhost : test 05:13:58> INSERT INTO boolean_test(Online_Flag,Lock_Flag) VALUES(1,0);
Query OK, 1 row affected (0.00 sec)root@localhost : test 05:14:04> INSERT INTO boolean_test(Online_Flag,Lock_Flag) VALUES(2,-1);
Query OK, 1 row affected (0.00 sec)root@localhost : test 05:14:11> INSERT INTO boolean_test(Online_Flag,Lock_Flag) VALUES(-128,127);
Query OK, 1 row affected (0.00 sec)root@localhost : test 05:14:18> INSERT INTO boolean_test(Online_Flag,Lock_Flag) VALUES(-256,256);
Query OK, 1 row affected, 2 warnings (0.00 sec)root@localhost : test 05:14:24> SHOW WARNINGS;
+---------+------+------------------------------------------------------+
| Level   | Code | Message                                              |
+---------+------+------------------------------------------------------+
| Warning | 1264 | Out of range value for column 'Online_Flag' at row 1 |
| Warning | 1264 | Out of range value for column 'Lock_Flag' at row 1   |
+---------+------+------------------------------------------------------+
2 rows in set (0.00 sec)

小结:

I.测试数据表boolean_test的2个字段布尔类型字段,写入的值超过有符号整型TINYINT数据类型存储范围时,出现了字段值截断的警告信息;

II.向测试数据表boolean_test的字段可以写入表达布尔数值的TRUE 或 FALSE是不会报错,也不需要用单引号或双引号括起来;

III.向测试数据表boolean_test的字段可以写入非表达布尔类型的数值,MySQL数据库不会有任何错误或警告信息提示;

c). 显示写入表boolean_test的数据

root@localhost : test 06:31:33> SELECT * FROM boolean_test;
±—±------------±----------+
| ID | Online_Flag | Lock_Flag |
±—±------------±----------+
| 1 | 1 | 0 |
| 2 | 1 | 0 |
| 3 | 2 | -1 |
| 4 | -128 | 127 |
| 5 | -128 | 127 |
±—±------------±----------+
5 rows in set (0.00 sec)

小结:

通过查阅测试表boolean_test的数据,可以发现MySQL数据库中存储的值与数据写入的INSERT语句还是有一些差别,体现在:

I.写入的布尔类型值TRUE 转换成了 1,FALSE 转换成了 0;

II.超过TINYINT数据类型存储的上下限制的值,被自动截断;

III.布尔类型BOOL/BOOLEAN的功能等同于微整型TINYTINT。

好了以上就是布尔类型的内容,下一节也是这个系列的最后一节我们要讲一讲三种类型的应用场景详解,感兴趣的读者可以关注我,这样就不会错过了哦~

如果这篇文章对你有用的话别忘了点赞收藏呀~

boolean 默认_MySQL数据类型测试:BOOLEAN、TINYINT测试数据总结(第八节)相关推荐

  1. boolean默认值

    Boolean的默认值 boolean数据类型 boolean变量存储为8位(1字节) 的数值形式,但只能是false或true 且默认值为false. 当作为 构造函数 (带有 new ) 调用时, ...

  2. html 判断boolean,js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则...

    if()中的判断条件其实是转换成Boolean类型对Boolean类型的判断 String类型 var a="test"; if(a){ alert("yes" ...

  3. ECMAScript——基本数据类型之boolean

    布尔类型中 true/false !:首先将其他的数据类型转换为boolean类型,然后在把得到的布尔值取反 !3 --> false !!:将其他数据类型转换为布尔类型 和Boolean()效 ...

  4. 前端系统化学习【JS篇】:(四-3)基本数据类型之Boolean篇

    前言 细阅此文章大概需要 7分钟左右 本篇中详细讲述详细讲述了: Boolean布尔数据类型简述 其他类型值转换为布尔类型值的方法和各种情况 在==比较的过程中,数据类型转换的规则 如果有任何问题都可 ...

  5. mysql数据类型默认值_MySQL数据类型 - 数据类型默认值

    数据类型默认值 数据类型规范可以有显式或隐式的默认值. 数据类型规范中的DEFAULT值子句显式指示列的默认值.示例: SERIAL DEFAULT VALUE是一种特殊情况.在整数列的定义中,它是N ...

  6. mysql布尔数据类型_MySQL数据类型

    在本教程中,您将了解MySQL数据类型以及如何在MySQL中设计数据库时有效地使用它们. 数据库表包含具有特定数据类型(如数字或字符串)的多个列. MySQL提供更多的数据类型,而不仅仅是数字或字符串 ...

  7. mysql实型_mysql 数据类型

    1.整型 类型 大小 范围(有符号) 范围(无符号) 用途 tinyint 1 字节 (-128,127) (0,255) 小整数值 smallint 2 字节 (-32 768,32 767) (0 ...

  8. 测试数据管理:测试数据和设计方法是什么?如何管理

    测试数据设计与管理指南 在目前信息与技术革命性增长史上,测试者通常在软件测试生命周期中经历大量的测试数据消耗. 测试人员不仅收集/维护现有来源的数据,而且还生成大量测试数据,以确保其在实际使用中提供产 ...

  9. mysql longtext 默认_mysql+longtext+默认值

    MySQL---数据类型和表的基本操作 版权声明:本文为博主原创文章,转载请注明出处.https://blog.csdn.net/twilight_karl/article/details/74027 ...

最新文章

  1. Git使用sublime_text作用默认编辑器
  2. evga x58服务器芯片组,为六核980X而生 EVGA发布X58 FTW3主板
  3. python2019慕课答案_中国大学慕课mooc2020Python编程基础章节测试答案
  4. 银行家算法:解决多线程死锁问题
  5. Android中获取应用程序(包)的信息-----PackageManager的使用(一)
  6. c语言学习进阶-C语言程序性能优化
  7. 洛谷p1338末日的传说(思维好题,数学)
  8. 设计模式14_组合结构
  9. 收集整理的较为经典的shell脚本合计
  10. (二十六)深度学习目标检测:Fast-RCNN
  11. 数据引用Data References
  12. c#中接口的使用方法图解_C#中的接口interface的使用
  13. cobbler自动化系统安装
  14. 图像的上采样、下采样
  15. laypage ajax,laypage前端分页插件实现ajax异步分页
  16. 面试丨求职时这样回答问题你就输了!来自IT面试官视角的深度解读
  17. 模拟简单 LeetCode6070. 计算字符串的数字和
  18. “15分钟核酸检测服务圈”怎样进行采样点选址
  19. 鸟与虫(四)pexels搜到的我都想要,
  20. uboot研读笔记 | 13 - uboot编译构建Makefile分析研读(2016.03版本)

热门文章

  1. Centos环境下删除Oracle11g客户端文档
  2. table数据表 边框特效
  3. Web.Config文件配置之数据库连接配置
  4. [转载]SQL SERVER 2008 阻止保存要求重新创建表的更改
  5. python中的变量的作用_Python中的变量作用域
  6. php获取控制器返回,thinkphp获取所有控制器的方法
  7. mysql error1045 yes,MySQLERROR1045(28000)错误的解决办法
  8. Ubuntu 16.04 安装 Matlab2016a
  9. 联想ghost重装系统_一键ghost,详细教您使用一键ghost怎么重装win7系统
  10. wpf 控件生成图片_EyeshotCAD控件生成以及作用