mysql下数据类型图

75.png
一、数值型
数值型分为整数型、小数型。

1、整数型:tinyint、smallint、mediumint、int、bigint所占字节数以及取值范围如下图所示:
94.png

现实中不可能出现负数,所以,可以使用unsinged 关键字来将有符号数的整数类型,换为无符号类型

2、小数型:又分为浮点型与定点型
①、浮点类型分为float 与double
数据表中创建float与double类型时,
语法为:float(m,d)

   double(m,d)

m表示总位数,d表示小数位数 整数位为:m-d;如下所示创建浮点型表:

95.png

96.png

!注意 insert语句插入要是用values()

继续插入一组时,会发现数据缺失问题

97.png

对于浮点型会出现精度丢失问题。
对于float类型仅能精确到5至6位,多于的位会使用0代替
对于double类型竟能精确到14至15位,多于位会使0代替。
精度低的问题,实际开发中,并不使用 float double。
②、定点型 decimal(表示的精确位数更多,并且不会丢失精度)
decimal(m,d) m代表总位数,d代表小数位数 ,其中m的最大取值为65,d的最大取值为30.
decimal 如果不写m默认值为10,如果不写d,默认值为0.
98.png

使用小数时,最合理的选择是decimal.如下图:(此时,小数取值最精准 相比float double)

99.png

float double decimal可以不用写括号,但是char varchar必须写括号。

二、字符串类型
说明:utf8每个字符占三个字节
①、定长
char (len) 说明:len表示字符的个数,最大是255 255 255 255 255 (len)确定char数字、字符个数

100.png
②、变长
varchar(max) 说明:max表示字符的个数。

103.png
理论是65535(会受到很多条件限制)

定长变长测试:

102.png

③、文本类型

text包含一个系列 tinytext、text、mediumtext、longtext 区别是存储的字符的所少不同

④、blob类型

blob包含一个系列 tinyblob、blob、mediumblob、longblob 区别是存储的数据的多少不同

什么是blob ?
用记事本方式打开一个图片,即为blob数据的展现方式 (计算机认识,但是我们不认识)eg:

104.png

⑤、枚举类型 enum
enum('值','值') 当插入数据的时候,只能插入enum后括号内存进的数据,如果没有,那么会报错。

示例:

105.png

插入人妖会报错!!!!并不是什么都不显示。

⑥、set集合类型
注意:set不管选取一个值还是多个值,必须写在同一个字段中,如('pink,yellow'),而不能('pink','yellow')!!!!

在一个字段,可以插入多个值,也可以一个字段插入一个值 ,如下图所示:

107.png

106.png

注意:set不管选取一个值还是多个值,必须写在同一个字段中,如('pink,yellow'),而不能('pink','yellow')!!!!

三、时间和日期型
year:year(2)或者 year(4) 其中year(2)表示 年份中输入‘19’ year(4)表示 输入时应该输入 ‘2019’
date: 代表年月日 如:‘2019-7-8’
time:表示小时 如‘20:04:54’
datetime:'2019-7-8(空格)20:04:54'即 '2019-7-8 20:04:54'
timestamp:时间戳的意思 作用:记录数据表中最后一次修改数据的时间 但是有问题先说明一下 ,时间戳我再使用时,默认显示null,只有设置了默认初始和更新后,才可以用来记录时间戳。
设置默认时间戳 :stamp_created timestamp default CURRENT_TIMESTAMP
设置更新后时间戳:stamp_update timestamp default now()on update now()
如下图所示:

未设置默认初始时间戳:

108.png

设置默认时间戳但是没设置更新时间戳:

109.png

110.png

多次删除表格重建后并设置初始更新时间戳

111.png