浮点型数据是一种精度型数据,因为超出指定范围之后,其会丢失精度,自动进行四舍五入操作。理论上,浮点型分为两种精度:
float
:单精度,占用 4 个字节存储数据,精度范围大概为 7 位左右;double
:双精度,占用 8 个字节存储数据,精度范围大概为 15 位左右。
浮点型的使用方式:如果直接用float
,则表示没有小数部分;如果用float(M,D)
,其中M
代表总长度,D
代表小数部分长度,M-D
则为整数部分长度。
此外,插入浮点型数据时,整数部分是不能超出长度范围的,但是小数部分是可以超出长度范围的,系统会自动进行四舍五入的操作。特别是,如果浮点数是因为系统进位(四舍五入)导致整数部分超出指定的长度,那么系统是允许成立的。
定点型数据,绝对的保证整数部分不会被四舍五入,也就是说不会丢失精度,但小数部分有可能丢失精度,虽然理论上小数部分也不会丢失精度。
插入数据时定点数的整数部分一定不能超出长度范围(进位也不可以),小数部分的长度则可以随意超出,没有限制,系统会自动进行四舍五入的操作。
日期时间型数据,顾名思义,就是用来表示日期和时间的数据类型,共有五种类型,分别为:
datetime
:日期时间,其格式为yyyy-MM-dd HH:mm:ss
,表示的范围是从 1000 年到 9999 年,有零值,即0000-00-00 0000:00
;date
:日期,就是datetime
的date
部分;time
:时间,或者说是时间段,为指定的某个时间区间之间,包含正负时间;timestamp
:时间戳,但并不是真正意义上的时间戳,其是从1970
年开始计算的,格式和datetime
一致;year
:年份,共有两种格式,分别为year(2)
和year(4)
.
插入数据时,日期时间型中的time
,可以为负数,甚至可以是很大的负数;year
,可以使用 2 位数据插入,也可以使用 4 位数据插入;timestamp
,只要当前所在的记录被更新,该字段就会自动更新为当前时间,且时间戳类型默认为非空的。
https://github.com/guobinhit/mysql-tutorial/blob/master/articles/column-type.md