JDBC Mysql(数据库)基础
开发工具与关键技术:SQL MySql的数据类型
作者:刘铭聪
撰写时间:2021年6月19日
1.MySql 8 数据类型
设计mysql表结构的时候,有很多数据类型供我们选择,下面来介绍下mysql8中常用的数据类型。 它们分别是整数类型,实数类型,字符串类型,日期和时间类型,位数类型以及JSON类型等.
1.1 整数类型
⑴ 整数类型有可选的unsigned属性,表示不允许负值,这可以使正数的上限提高一倍(还多1)。有符号和无符号类型使用相同的存储空间,并且具有相同的性能,因此可以根据实际情况选择合适的类型。
⑵ mysql可以为整数类型指定宽度,例如INT(11),对大多数应用来说这是没有意义的:它不会限制合法范围,只是规定了mysql的一些交互工具(例如mysql命令行客户端)用来显示字符的个数。对于存储和计算来说,INT(1)和INT(20)是相同的。
1.2 实数类型
注意FLOAT和DOUBLE可表示的范围不是完全连续的浮点数,由于精度的限制,有些极小的小数是表示不了的。
① DECIMAL类型最多允许65个数字,表示为DECIMAL(M,D)的格式。例如DECIMAL(5,2)表示最多保存5个数字,其中2个是小数,表示的范围在-999.99 到 999.99之间。如果小数位数D为0,则DECIMAL值不包含小数点或小数部分。
② FLOAT和DOUBLE类型只能使用标准的浮点运算进行近似运算,如果需要精确运算,例如金额计算,则需要使用DECIMAL类型。
③ 因为cpu不支持对DECIMAL的直接计算,所以在mysql5.0以上的版本中,mysql服务器自身实现了DECIMAL的高精度计算。相对而言,cpu直接支持原生的浮点计算,所以浮点计算明显更快。
④ 涉及到金额计算,在数据量比较大的时候,可以考虑用BIGINT代替DECIMAL。例如金额单位精确到分,99.99可以用9999表示,以分为单位存储在BIGINT字段里,这样可以同时避免浮点数计算的不精确和DECIMAL精确计算代价高的问题。
1.3 字符串类型
⑴ CHAR
①CHAR类型是定长的,会根据定义的长度分配空间。当存储CHAR值时,mysql会删除所有的末尾空格。
②CHAR很适合存储很短的字符串,或者所有的值都接近同一个长度,例如,CHAR非常适合存储密码的
③MD5的值,因为这是一个定长的长度。对于经常变动的数据,CHAR也比VARCHAR更好&