文章目录

  • 数据类型分类
  • 数值类型
  • 越界访问
  • bit类型
  • 小数类型
  • float
  • decimal
  • 字符串类型
  • char
  • varchar
  • 日期
  • enum和set


数据类型分类

在MySQL数据库中,存在各种各样的数据类型:

mysql存储的是图片还是路径 mysql数据库存图片数据类型_mysql存储的是图片还是路径

针对于上述的这么多类型,本篇就对于这些类型的数据进行一一解释,并解释其当中的特性

数值类型

mysql存储的是图片还是路径 mysql数据库存图片数据类型_MySQL_02


以上展示的是在MySQL中的数值类型以及对应的最大最小值,从中可以看出是和C语言有很多相似的地方的,那么接下来就设计一组越界测试来检验最大最小值

越界访问

普通越界访问

mysql存储的是图片还是路径 mysql数据库存图片数据类型_数据_03


这里我创建了一个数据库,并尝试向tinyint中插入对应的数据,此时发现插入是失败的,这是因为超过了一个字节对应的最大存储值,换句话说MySQL并不允许插入一个不符合范围的数据

换句话说,MySQL中和C语言不一样,在C语言中如果使用的是超过接线的数字,最多是会提示一个告警的信息,在具体的处理中会有截断或者是隐式类型转换这样的操作,但是不管怎么说,终是可以容纳进去的,但是在MySQL中这样的操作是不合法,也是不可接受的

如果向MySQL中插入不合法的数据,那么MySQL会直接拦截,不让这样的操作继续向后执行,换句话说,如果有数据被成功插入MySQL当中了,那么就意味着这个数据一定是合法的

所以,MySQL的数据类型本身也是一种约束,这样就能保证数据库中的数据都是可预期,完整的数据,同时也会使得程序员必须要进行数据的正确插入,约束使用者

无符号和有符号数

mysql存储的是图片还是路径 mysql数据库存图片数据类型_数据库_04

bit类型

下面介绍的这种数据类型是bit类型,它表示的是位字段类型,其中可以指定这个类型中有多少个比特位,如果不设置默认是1个比特位:

mysql存储的是图片还是路径 mysql数据库存图片数据类型_数据库_05


由上面的现象可以得出一个结论,在bit位段进行显示的时候,会按照ASCII对应的值来进行显示,在未来,如果有需要的使用场景,填入的数据只有0或者1这两种可能,此时就可以插入一个bit位1的位段,那么表示的就是这个位置填入的数据不是0就是1,这样可以节省空间

mysql存储的是图片还是路径 mysql数据库存图片数据类型_数据库_06


从上述用例可以看出,这部分的内容也是遵守界限规则的

小数类型

float

对于float,在C语言中表示的是浮点数,而在MySQL语句中略有不同,在定义的时候要制定对应的显示长度,小数位数,float类型占用空间是4个字节

mysql存储的是图片还是路径 mysql数据库存图片数据类型_mysql_07


以上述的float类型的数据范围是4, 2为例,它表示的意思是该浮点数显示的是4位,并且有效精度是2位,那么对于这个测试来说,它所能表示的范围就是-99.99到99.99,值得注意的是,这个是遵循四舍五入原则的,如果插入的是99.991,其实也是可以插入的,但是如果是99.995,就不可以了

无符号float

mysql存储的是图片还是路径 mysql数据库存图片数据类型_数据_08


对于无符号的类型数据来说,其实就是把数据范围中的负数部分去掉了,只能选正数的部分

decimal

以上是对float的理解,那么下面介绍的数据类型是decimal

它定义的方法和float是一样的,但是区别是,它表示的精度和float并不相同:

mysql存储的是图片还是路径 mysql数据库存图片数据类型_数据_09


从中看出,它们两个类型的区分之一就是精度不一样,这是由于float内部的存储模式决定的,float表示的精度最大是7位左右,而对应的decimal可以容纳的是65,小数最大是30位

所以,当需要使得小数的精度更高的时候,推荐使用的是decimal

字符串类型

char

mysql存储的是图片还是路径 mysql数据库存图片数据类型_mysql_10


从中可以看出的规律是,char(2)表示可以存放的是两个字符,可以是字母或者汉字,最长是255

varchar

mysql存储的是图片还是路径 mysql数据库存图片数据类型_数据库_11


看似它和char作用是一样的,那么具体的有什么不同点呢?

mysql存储的是图片还是路径 mysql数据库存图片数据类型_数据库_12


变长的意义就是,在不超过自定义范围的情况下,用多少开辟多少,而定长就是直接先都开辟好了

日期

常用的日期有三个

  1. date
  2. datetime
  3. timestamp

mysql存储的是图片还是路径 mysql数据库存图片数据类型_MySQL_13


需要注意的是,t3表示的时间戳类型,它会自动在你插入数据打的时候进行更新,更新的就是当前的时间

enum和set

对于enum其实并不陌生,它表示的就是枚举,所以这里不再进行赘述,和c中的用法是一样的,这个设定提供了若干个选项的值,在最终的单元格中,只是存储了数字

那这个set表示的类型是集合的意思,就是提供了若干的选项,可以从中进行挑选等

find_in_set函数

这个函数从名字就能看出,它主要是为了在集合中查找元素而服务的,一般格式为

find_in_set(sub,str_list):如果这个sub在str_list当中,那么就返回下标,如果不存在就返回0

mysql存储的是图片还是路径 mysql数据库存图片数据类型_MySQL_14