`
chenzehe
  • 浏览: 538184 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL 浮点型 定点型 长度

阅读更多

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 |
+-------+------+------------------------------------------+
1 row in set (0.00 sec)

 

将id1,id2,id3的精度和标度都去掉,再插入数据1.234:

mysql> ALTER TABLE t2 MODIFY id1 FLOAT;
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE t2 MODIFY id2 DOUBLE;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE t2 MODIFY id3 DECIMAL;
Query OK, 4 rows affected, 4 warnings (0.06 sec)
Records: 4  Duplicates: 0  Warnings: 4

 

mysql> DESC t2;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id1   | float         | YES  |     | NULL    |       |
| id2   | double        | YES  |     | NULL    |       |
| id3   | decimal(10,0) | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+

 

mysql> INSERT INTO t2(id1,id2,id3) VALUES(1.234,1.234,1.234);
Query OK, 1 row affected, 1 warning (0.00 sec)

 

mysql> SHOW WARNINGS;
+-------+------+------------------------------------------+
| Level | Code | Message                                  |
+-------+------+------------------------------------------+
| Note  | 1265 | Data truncated for column 'id3' at row 1 |
+-------+------+------------------------------------------+
1 row in set (0.00 sec)

 

mysql> SELECT * FROM t2;
+-------+-------+------+
| id1   | id2   | id3  |
+-------+-------+------+
| 1.234 | 1.234 |    1 |
+-------+-------+------+
1 row in set (0.00 sec)

 

id1和id2的数据正确插入,而id3被截断。

 

浮点数如果不写精度和标度,则会按照实际显示,如果有精度和标度,则会将数据四舍五入后插入,系统不报错,定点数如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会报错。

 

 

 

 

2
1
分享到:
评论

相关推荐

    MySQL数据类型

    MySQL 数据类型主要有六大类,即整型、浮点型、定点数浮点型、字符串、日期时间类型和二进制数据类型。 整型 整型是 MySQL 中最基本的数据类型,包括有符号和无符号两种形式。有符号整型包括 tinyint、smallint、...

    mysql数据类型

    MySQL 数据类型是指在 MySQL 中存储数据的格式,包括整型、浮点型、定点型、字符串、日期时间型、枚举型等多种类型。下面将对 MySQL 数据类型进行详细的介绍。 整型 MySQL 中的整型包括 tinyint、smallint、...

    MySql所有字段类型及长度范围

    #### 浮点和定点数据类型 - **FLOAT[(M,D)][ZEROFILL]**:FLOAT 类型用于存储单精度浮点数,其有效数值范围约为 -3.402823466E+38 到 -1.175494351E-38,以及 1.175494351E-38 到 3.402823466E+38。M 表示总位数,D...

    mysql学习笔记

    MySQL提供了丰富的数值类型,主要分为三大类:整数型、浮点型以及定点数型。 ##### 整数型 整数型根据所占字节数的不同,可以进一步细分为多种类型: - **TinyInt (1 Byte)** - 用于存储较小的整数。 - **...

    MySQL学习.docx

    接下来是小数类型,分为浮点型和定点型。浮点型包括`FLOAT`和`DOUBLE`,它们都可能出现精度损失。`FLOAT`占用4字节,可表示大约10^38的数值,精度约为7位;`DOUBLE`占用8字节,表示范围更广,约10^308,精度约为15位...

    21 分钟 MySQL 入门教程

    - **数值类型**:如整数类型(`INT`)、浮点类型(`FLOAT`)和定点类型(`DECIMAL`)。 - **字符串类型**:如固定长度字符串类型(`CHAR`)、可变长度字符串类型(`VARCHAR`)和文本类型(`TEXT`)。 - **日期和时间...

    六天带你玩转MySQL视频.zip

    04列类型(浮点型) 05列类型(定点型) 06列类型(时间日期类型) 07列类型(定长+变长字符串) 08列类型(文本字符串) 09列类型(枚举) 10列类型(集合) 11列类型(mysql记录长度) 12列属性(空属性).........

    MySQL常见面试题总结

    数值类型包括整型(如TINYINT到BIGINT)和浮点型(如FLOAT和DOUBLE),以及定点型(如DECIMAL)。字符串类型有CHAR、VARCHAR等,它们在存储时有所不同,CHAR是固定长度,VARCHAR则是动态长度,节省空间。日期时间...

    mysql个人学习笔记

    MySQL个人学习笔记 本篇文章是一个关于MySQL的个人学习笔记,涵盖了基本的增删改查语句,...22. MySQL中的数据类型包括整数形、浮点型、定点型等。其中,整数形包括Tinyint、Int等。 23. Tinyint 占一个字节,8 位。

    MYSQL使用大全

    DECIMAL 是一种变长的“严格”的定点数类型。 日期和时间类型 日期和时间类型包括 DATE、DATETIME、TIMESTAMP、TIME、YEAR 等。DATE 类型用于存储日期,DATETIME 类型用于存储日期和时间,TIMESTAMP 类型用于存储...

    MySQL常用数据类型

    浮点型和定点型主要用于存储实数。 - **FLOAT**: 单精度浮点数,占用4个字节,提供约7位有效数字。 - **DOUBLE**: 双精度浮点数,占用8个字节,提供约15位有效数字。 - **DECIMAL**: 定点数,可以精确表示小数,...

    Mysql字段类型说明

    MySQL是一种广泛使用的开源关系型数据库管理系统,其字段类型是数据库设计中的重要概念,它决定了数据存储的格式和特性。理解并正确选择字段类型对于优化数据库性能、节省存储空间以及确保数据准确性至关重要。以下...

    6天MySQL数据库学习笔记

    - **浮点型**与**定点型**:浮点型(如Float和Double)支持小数点浮动,但精度有限且可能丢失精度;定点型(如Decimal)则具有固定的精度,适用于金融等需要高精度计算的场景。 - **时间日期类型**:MySQL支持多种...

    mysql数据类型共2页.pdf.zip

    3. 定点数(Fixed-Point Types):DECIMAL 和 NUMERIC 是两个定精度和定范围的数值类型,适用于需要高精度计算的场景。它们的精度和范围可以在创建表时定义。 4. 字符串类型(String Types):CHAR、VARCHAR、TEXT...

    Mysql非常全的和完整的总结文档

    - 浮点型:分为FLOAT和DOUBLE,对应于单精度和双精度浮点数,不会产生精度丢失。 - 定点型:DECIMAL,用于需要高精度计算的场景,例如财务数据。 2. 日期和时间型数据类型,如: - DATE:表示日期类型。 - ...

    mysql常用数据类型

    MySQL作为一款广泛使用的开源关系型数据库管理系统,提供了丰富的数据类型以满足各种应用场景的需求。下面将详细解析MySQL中常用的各类数据类型,包括它们的大小、范围、格式以及具体用途。 ### 整型数据类型 ####...

    MySQL 数据类型 详解

    - `FLOAT(m,d)`: 单精度浮点型,8位精度(4字节),`m` 总共的数字个数,`d` 小数位数。例如,`FLOAT(5,3)` 存储的数字最多是5位,其中3位是小数,如123.456。 - `DOUBLE(m,d)`: 双精度浮点型,16位精度(8字节)...

    MYSQL数据库的用法[定义].pdf

    3. 浮点和定点数类型: - FLOAT:4字节,表示较小的浮点数。 - DOUBLE[length,decimals]:8字节,表示较大的浮点数。 - DECIMAL[length,decimals]:存储为字符串的定点数,允许固定的小数点。 4. 日期和时间类型...

    mysql面试题100题

    - 小数类型:FLOAT、DOUBLE 和 DECIMAL,用于存储浮点和定点数。 - 字符串类型:VARCHAR、CHAR、TEXT 和 BLOB,其中 VARCHAR 和 CHAR 区别在于 VARCHAR 变长,CHAR 定长。 - 日期和时间类型:DATETIME、DATE 和 ...

    MySQL 中的数据类型介绍

    MySQL 中的数值类型分为整数类型、定点数和浮点数。 - 整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT,它们分别适用于不同大小的整数值。例如,TINYINT 可以存储 -128 到 127 的整数,INT 则...

Global site tag (gtag.js) - Google Analytics