MySql 8 数据类型
设计mysql表结构的时候,有很多数据类型供我们选择,下面来介绍下mysql8中常用的数据类型
整数类型
整数类型有可选的unsigned属性,表示不允许负值,这可以使正数的上限提高一倍(还多1)。有符号
和无符号类型使用相同的存储空间,并且具有相同的性能,因此可以根据实际情况选择合适的类型。
mysql可以为整数类型指定宽度,例如INT(11),对大多数应用来说这是没有意义的:它不会限制合法范
围,只是规定了mysql的一些交互工具(例如mysql命令行客户端)用来显示字符的个数。对于存储和计
算来说,INT(1)和INT(20)是相同的。
实数类型
注意FLOAT和DOUBLE可表示的范围不是完全连续的浮点数,由于精度的限制,有些极小的小数是表示
不了的
DECIMAL类型最多允许65个数字,表示为DECIMAL(M,D)的格式。例如DECIMAL(5,2)表示最多保存5个
数字,其中2个是小数,表示的范围在-999.99 到 999.99之间。如果小数位数D为0,则DECIMAL值不包
含小数点或小数部分
DECIMAL类型最多允许65个数字,表示为DECIMAL(M,D)的格式。例如DECIMAL(5,2)表示最多保存5个
数字,其中2个是小数,表示的范围在-999.99 到 999.99之间。如果小数位数D为0,则DECIMAL值不包
含小数点或小数部分
因为cpu不支持对DECIMAL的直接计算,所以在mysql5.0以上的版本中,mysql服务器自身实现了
DECIMAL的高精度计算。相对而言,cpu直接支持原生的浮点计算,所以浮点计算明显更快。
涉及到金额计算,在数据量比较大的时候,可以考虑用BIGINT代替DECIMAL。例如金额单位精确到分,
99.99可以用9999表示,以分为单位存储在BIGINT字段里,这样可以同时避免浮点数计算的不精确和
DECIMAL精确计算代价高的问题。
JSON类型
mysql8支持直接存储json格式字符串,对应的是json数据类型。
json数据列会自动验证json的数据格式,如果格式不正确会报错。
最优化存储格式。json数据类型会把json格式的字符串转换成内部格式,能够快速的读取其中的元
素。