前面一段实验是引用别人的,后面作了一点补充

MySQL浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如 float(7,4)的可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。 FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

创建下表:

mysql> CREATE TABLE t2(id1 FLOAT(5,2) DEFAULT NULL,id2 DOUBLE(5,2) DEFAULT NULL,id3 DECIMAL(5,2) DEFAULT NULL);

mysql> DESC t2;

+-------+--------------+------+-----+---------+-------+

| Field | Type         | Null | Key | Default | Extra |

+-------+--------------+------+-----+---------+-------+

| id1   | float(5,2)   | YES  |     | NULL    |       |

| id2   | double(5,2)  | YES  |     | NULL    |       |

| id3   | decimal(5,2) | YES  |     | NULL    |       |

+-------+--------------+------+-----+---------+-------+

往id1,id2,id3这三个字段中插入数据1.23:

mysql> INSERT INTO t2(id1,id2,id3) VALUES(1.23,1.23,1.23);

mysql> SELECT * FROM t2;

+------+------+------+

| id1  | id2  | id3  |

+------+------+------+

| 1.23 | 1.23 | 1.23 |

+------+------+------+

数据都正确插入,再向id1插入1.234,id2插入1.234,id3仍然插入1.23:

mysql> INSERT INTO t2(id1,id2,id3) VALUES(1.234,1.234,1.23);

mysql> SELECT * FROM t2;

+------+------+------+

| id1  | id2  | id3  |

+------+------+------+

| 1.23 | 1.23 | 1.23 |

| 1.23 | 1.23 | 1.23 |

+------+------+------+

数据全部正确插入,但是id1和id2由于标度的限制,舍去了最后一位。

同时向id1,id2,id3中插入数据1.234:

mysql> INSERT INTO t2(id1,id2,id3) VALUES(1.234,1.234,1.234);

Query OK, 1 row affected, 1 warning (0.02 sec)

mysql> SELECT * FROM t2;

+------+------+------+

| id1  | id2  | id3  |

+------+------+------+

| 1.23 | 1.23 | 1.23 |

| 1.23 | 1.23 | 1.23 |

| 1.23 | 1.23 | 1.23 |

+------+------+------+

3 rows in set (0.00 sec)

数据也插入成功,但是有一个错误提示,

mysql> SHOW warnings;

+-------+------+------------------------------------------+

| Level | Code | Message                                  |

+-------+------+------------------------------------------+

| Note  | 1265 | Data truncated for column 'id3' at row 1

为什么会有错误呢?这里与mysql 的模式有关,可以用

SET sql_mode = ''让错误不显示;设置运行模式,这条语句让即强制不设定MySql模式(如不作输入检测、错误提示、语法模式检查等)应该能提高性能,但有如下问题: 如果插入了不合适数据(错误类型或超常),mysql会将数据设为“最好的可能数据”而不报错,如: /数字 设为:0/可能最小值/可能最大值 /字符串 设为:空串/能够存储的最大容量字符串 /表达式 设为:返回一个可用值(1/0-null) 所以,解决办法是:所有列都要采用默认值,这对性能也好。 一般的sql 模式有: 在mysql 5中,默认的是REAL_AS_FLOAT,PIPES_AS_CONTACT,ANSI_QUOTES,GNORE_SPACE和ANSI, 在这种模式下,允许插入超过字段长度的值,只是插入后,返回的是警告而不是错误,当用STRICT_TRANS_TABLES时, 则是错误了,严格的警告. NO_AUTO_CREATE_USER 防止GRANT自动创建新用户,除非还指定了密码。 对于他们在磁盘上的存储也不同 对于浮点型,float 占4个字节 double 占8字节 无论你选择的是float还是double 在mysql 内部进行计算时都采用doublel类型 在对定点存储时,数字是9个数字占用4哥字节,小数点单独占用一个字节

mysql 浮点类型和定点_mysql 中的浮点和定点类型相关推荐

  1. MySQl中文1001无标题_Mysql中字段类型不一致导致索引无效的处理办法

    前两天有个同事算数据,写出来的sql执行很慢.那个sql也很简单,就是一个左联带条件的查询.explain之后发现,其中有一张表没有用到索引.初始以为是没有建索引,于是建上索引再试,发现问题依旧.后来 ...

  2. mysql 修改字段类型为字符串_MySQL中字段类型与合理的选择字段类型

    原标题:MySQL中字段类型与合理的选择字段类型 字段类型 数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是 整数,另一个是 浮点数或小数. 许多不同的子类型对这些类别中的每一个都是可用 ...

  3. mysql日期隐式转换_mysql中的隐式转换

    什么隐式类型转换? 在MySQL中: 当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容.则会发生转换隐式 也就是说,MySQL会根据需要自动将数字转换为字符串,将字符串转换数字.看到 ...

  4. mysql的explain怎么看_mysql中explain用法详解

    如果在select语句前放上关键词explain,mysql将解释它如何处理select,提供有关表如何联接和联接的次序. explain的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 1 ...

  5. mysql约束添加删除数据_mysql中约束的添加,修改,与删除

    MySQL中的约束,添加约束,删除约束,以及其他的一些修饰: 一.NOT NULL(非空约束) 添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) ...

  6. mysql数据库全部大写吗_mysql中数据库名字分大小写吗

    推荐答案 MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大小 ...

  7. mysql时间戳是什么意思_mysql中TIMESTAMP时间戳详解

    在mysql数据库中,时间戳TIMESTAMP有如下的一些变体: 1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在 ...

  8. mysql的collate什么意思_MYSQL中的COLLATE是什么?

    在mysql中执行show create table 指令,可以看到一张表的建表语句,example如下: CREATE TABLE `table1` ( `id` bigint(20) unsign ...

  9. mysql 事务隔离详解_MySQL 中事务、事务隔离级别详解

    一.事务的概念 1.事务的概念 2.在mysql中哪些存储引擎(表类型)支持事务哪些不支持 3.事务的四个属性 4.mysql事务的创建与存在周期 5.mysql行为 6.事务的隔离性和性能 7.my ...

最新文章

  1. 和12岁小同志搞创客开发:手撕代码,点亮LED灯
  2. 基于Linux的视频传输系统(上大学时參加的一个大赛的论文)
  3. python时间序列因果检验_Python Statsmodels的时间序列Ljung_Box检验
  4. LeetCode 1004.最长连续1的个数
  5. 006_Select.sql查询语句
  6. dj电商-数据表的设计-用户表设计
  7. 吴恩达机器学习总结五:单变量线性回归实战
  8. Flink开发需要的环境
  9. gbase数据库锁表解决办法
  10. CCF推荐的A类、B类、C类中文科技期刊2022
  11. GEOTIF转nc文件
  12. [工业互联-7]:工业控制电气自动化系统与主要元器件
  13. Mapabc——地图标注
  14. python正态分布函数_数学之美_正态分布(Python代码)
  15. 使用Jsp+Servlet的wlop官网(验证码登录+session自动登陆)
  16. 870987-63-6,Ir[dF(CF3)ppy]2(dtbbpy)PF6,(Ir[dF(CF3)ppy]2(dtbpy))PF6铱催化剂
  17. stm32---RS485半双工通信
  18. 身份证里提取出生年月的方法(实用)
  19. linux系统服务器忘记密码怎么办
  20. 软件测试面试题:数据库大厂面试真题

热门文章

  1. MIUI11新版本推送,小米10 Pro跑分轻松突破60万
  2. 新消费催生新制造:拼多多一年将培育百家销量过亿家纺企业
  3. 5G芯片市场“四强争霸” 未来市场格局谁更胜一筹?
  4. 拳王虚拟项目公社:解除网站禁止复制的插件,Simple Allow Copy V 0.8.2
  5. TCP/IP的初步理解,TCP和UDP的区别
  6. 计算机资格考试中级工程师种类,中级工程师职称考试类别及注意事项
  7. java netty modbus协议接收iot数据
  8. java中类的方法分为 类方法_Java中类的方法成员分为()方法和实例方法。
  9. cout输出16进制_c++随堂测16优化方案
  10. linux C语言调用Intel处理器CPUID指令的实例