浮点型
精准度验证
float double decimal
如果不能换为double类型
float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;
FLOAT和DOUBLE在不指 定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0.
数据插入都正确
数据插入都正确,但是f和d由于标度的限制,舍去了最后一位.
数据也插入成功,但是有一个警告提示:
①. queries executed, 1 success, 0 errors, 1 warnings
Data truncated for column 'de' at row 1
ALTER TABLE test MODIFY f FLOAT;
ALTER TABLE test MODIFY d DOUBLE;
ALTER TABLE test MODIFY de DECIMAL;
DELETE FROM test;
DESC test;
f和d的数据正确插入,而de被截断.
浮点数如果不写精度和标度,则会按照实际显示,如果有精度和标度,则会将数据四舍五入后插入,系统不报错,定点数如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会警告!
同时,对数据求SUM()时会出现不同的结果,float和double求SUM都会出现很多小数点,而decimal求SUM得到的是精准数值:
数据都插入成功
MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补.
表列出了各种数值类型以及它们的允许范围和占用的内存空间.
类型 大小 范围(有符号) 范围(无符号) 用途
浮点数值
INT 类型
万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储.还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0.
UNSIGNED 修饰符规定字段只保存正值.因为不需要保存数字的正、负符号,可以在储时节约一个"位"的空间.从而增大这个字段可以存储的值的范围.
ZEROFILL 修饰符规定 0(不是空格)可以用来真补输出的值.使用这个修饰符可以阻止 MySQL 数据库存储负值.
FLOAT、DOUBLE 和 DECIMAL 类型
MySQL 支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型.FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值.
对于小数点后面的位数超过允许范围的值,MySQL 会自动将它四舍五入为最接近它的值,再插入它.
忽略 DECIMAL 数据类型的精度和计数方法修饰符将会使 MySQL 数据库把所有标识为这个数据类型的字段精度设置为 10,计算方法设置为 0.
UNSIGNED 和 ZEROFILL 修饰符也可以被 FLOAT、DOUBLE 和 DECIMAL 数据类型使用.并且效果与 INT 数据类型相同.
字符串类型
类型 大小 用途
CHAR 和 VARCHAR 类型
CHAR 类型可以使用 BINARY 修饰符.当用于比较运算时,这个修饰符使 CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式.
因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率.
VARCHAR 类型在使用 BINARY 修饰符时与 CHAR 类型完全相同.
TEXT 和 BLOB 类型
TEXT 和 BLOB 类型在分类和比较上存在区别.BLOB 类型区分大小写,而 TEXT 不区分大小写.大小修饰符不用于各种 BLOB 和 TEXT 子类型.比指定类型支持的最大范围大的值将被自动截短.
日期和时间类型
类型 大小
(字节) 范围 格式 用途
DATE、TIME 和 TEAR 类型
MySQL 用 DATE 和 TEAR 类型存储简单的日期值,使用 TIME 类型存储时间值.这些类型可以描述为字符串或不带分隔符的整数序列.如果描述为字符串,DATE 类型的值应该使用连字号作为分隔符分开,而 TIME 类型的值应该使用冒号作为分隔符分开.
需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳.
DATEYIME 和 TIMESTAMP 类型
除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型.它们可以把日期和时间作为单个的值进行存储.这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用.
如果我们对 TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 null 值.MySQL 会自动使用系统当前的日期和时间来填充它.
复合类型
MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范.虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型.一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值.
ENUM 类型
ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项.在处理相互排拆的数据时容易让人理解,比如人类的性别.ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串.另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值.
MySQL 认为 ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败.这说明通过搜索包含空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置.
SET 类型
SET 类型与 ENUM 类型相似但不相同.SET 类型可以从预定义的集合中取得任意数量的值.并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使 MySQL 插入一个空字符串.如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保留合法的元素,除去非法的元素.
希望从 SET 类型字段中找出非法的记录只需查找包含空字符串或二进制值为 0 的行.
以上就是土嘎嘎小编为大家整理的mysql怎么插入浮点型相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!