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)进行操作,如果数据超过了精度和标度值,则会报错。
分享到:
相关推荐
MySQL 数据类型主要有六大类,即整型、浮点型、定点数浮点型、字符串、日期时间类型和二进制数据类型。 整型 整型是 MySQL 中最基本的数据类型,包括有符号和无符号两种形式。有符号整型包括 tinyint、smallint、...
MySQL 数据类型是指在 MySQL 中存储数据的格式,包括整型、浮点型、定点型、字符串、日期时间型、枚举型等多种类型。下面将对 MySQL 数据类型进行详细的介绍。 整型 MySQL 中的整型包括 tinyint、smallint、...
#### 浮点和定点数据类型 - **FLOAT[(M,D)][ZEROFILL]**:FLOAT 类型用于存储单精度浮点数,其有效数值范围约为 -3.402823466E+38 到 -1.175494351E-38,以及 1.175494351E-38 到 3.402823466E+38。M 表示总位数,D...
MySQL提供了丰富的数值类型,主要分为三大类:整数型、浮点型以及定点数型。 ##### 整数型 整数型根据所占字节数的不同,可以进一步细分为多种类型: - **TinyInt (1 Byte)** - 用于存储较小的整数。 - **...
接下来是小数类型,分为浮点型和定点型。浮点型包括`FLOAT`和`DOUBLE`,它们都可能出现精度损失。`FLOAT`占用4字节,可表示大约10^38的数值,精度约为7位;`DOUBLE`占用8字节,表示范围更广,约10^308,精度约为15位...
- **数值类型**:如整数类型(`INT`)、浮点类型(`FLOAT`)和定点类型(`DECIMAL`)。 - **字符串类型**:如固定长度字符串类型(`CHAR`)、可变长度字符串类型(`VARCHAR`)和文本类型(`TEXT`)。 - **日期和时间...
04列类型(浮点型) 05列类型(定点型) 06列类型(时间日期类型) 07列类型(定长+变长字符串) 08列类型(文本字符串) 09列类型(枚举) 10列类型(集合) 11列类型(mysql记录长度) 12列属性(空属性).........
数值类型包括整型(如TINYINT到BIGINT)和浮点型(如FLOAT和DOUBLE),以及定点型(如DECIMAL)。字符串类型有CHAR、VARCHAR等,它们在存储时有所不同,CHAR是固定长度,VARCHAR则是动态长度,节省空间。日期时间...
MySQL个人学习笔记 本篇文章是一个关于MySQL的个人学习笔记,涵盖了基本的增删改查语句,...22. MySQL中的数据类型包括整数形、浮点型、定点型等。其中,整数形包括Tinyint、Int等。 23. Tinyint 占一个字节,8 位。
DECIMAL 是一种变长的“严格”的定点数类型。 日期和时间类型 日期和时间类型包括 DATE、DATETIME、TIMESTAMP、TIME、YEAR 等。DATE 类型用于存储日期,DATETIME 类型用于存储日期和时间,TIMESTAMP 类型用于存储...
浮点型和定点型主要用于存储实数。 - **FLOAT**: 单精度浮点数,占用4个字节,提供约7位有效数字。 - **DOUBLE**: 双精度浮点数,占用8个字节,提供约15位有效数字。 - **DECIMAL**: 定点数,可以精确表示小数,...
MySQL是一种广泛使用的开源关系型数据库管理系统,其字段类型是数据库设计中的重要概念,它决定了数据存储的格式和特性。理解并正确选择字段类型对于优化数据库性能、节省存储空间以及确保数据准确性至关重要。以下...
- **浮点型**与**定点型**:浮点型(如Float和Double)支持小数点浮动,但精度有限且可能丢失精度;定点型(如Decimal)则具有固定的精度,适用于金融等需要高精度计算的场景。 - **时间日期类型**:MySQL支持多种...
3. 定点数(Fixed-Point Types):DECIMAL 和 NUMERIC 是两个定精度和定范围的数值类型,适用于需要高精度计算的场景。它们的精度和范围可以在创建表时定义。 4. 字符串类型(String Types):CHAR、VARCHAR、TEXT...
- 浮点型:分为FLOAT和DOUBLE,对应于单精度和双精度浮点数,不会产生精度丢失。 - 定点型:DECIMAL,用于需要高精度计算的场景,例如财务数据。 2. 日期和时间型数据类型,如: - DATE:表示日期类型。 - ...
MySQL作为一款广泛使用的开源关系型数据库管理系统,提供了丰富的数据类型以满足各种应用场景的需求。下面将详细解析MySQL中常用的各类数据类型,包括它们的大小、范围、格式以及具体用途。 ### 整型数据类型 ####...
- `FLOAT(m,d)`: 单精度浮点型,8位精度(4字节),`m` 总共的数字个数,`d` 小数位数。例如,`FLOAT(5,3)` 存储的数字最多是5位,其中3位是小数,如123.456。 - `DOUBLE(m,d)`: 双精度浮点型,16位精度(8字节)...
3. 浮点和定点数类型: - FLOAT:4字节,表示较小的浮点数。 - DOUBLE[length,decimals]:8字节,表示较大的浮点数。 - DECIMAL[length,decimals]:存储为字符串的定点数,允许固定的小数点。 4. 日期和时间类型...
- 小数类型:FLOAT、DOUBLE 和 DECIMAL,用于存储浮点和定点数。 - 字符串类型:VARCHAR、CHAR、TEXT 和 BLOB,其中 VARCHAR 和 CHAR 区别在于 VARCHAR 变长,CHAR 定长。 - 日期和时间类型:DATETIME、DATE 和 ...
MySQL 中的数值类型分为整数类型、定点数和浮点数。 - 整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT,它们分别适用于不同大小的整数值。例如,TINYINT 可以存储 -128 到 127 的整数,INT 则...