Mysql 简明教程
MySQL - FLOAT
FLOAT 数据类型是数字数据类型的一部分。数字数据类型用于存储数字,并且可以根据其特性(例如存储大小和精度)将其分类为各种子类型。
The MySQL FLOAT Data Type
MySQL FLOAT 数据类型是一个浮点数类型,用于存储近似数字值。它在 4 个字节中存储近似数字值,并表示单精度值。
FLOAT 适用于广泛的数字值,但由于 IEEE 754 标准的限制,会以近似方式存储它们。
Example
在这个示例中,让我们使用 CREATE TABLE 语句创建一个名为“datatype_demo”的新数据库表,其中包含表示 FLOAT 值的列——
CREATE TABLE datatype_demo(
ID INT,
NAME VARCHAR(50),
HEIGHT FLOAT,
WEIGHT FLOAT
);
以下是所获得的输出 −
Query OK, 0 rows affected (0.03 sec)
Verification
创建表后,我们可以通过按如下所示检索表的定义来验证“HEIGHT”和“WEIGHT”字段的数据类型——
DESC datatype_demo;
DESC 命令的结果会显示“HEIGHT”和“WEIGHT”字段具有 FLOAT 数据类型 -
为了进一步验证,让我们使用以下 INSERT 语句将一些值插入表中 -
INSERT INTO datatype_demo VALUES
(1, 'John', 171.3, 65.7),
(2, 'Rob', 45, 75),
(3, 'Salman', 12.74839, 54.262),
(4, 'Arush', NULL, NULL),
(5, 'James', 'h', 'w');
以下是所获得的输出 −
ERROR 1265 (01000): Data truncated for column 'HEIGHT' at row 1
正如预期的那样,FLOAT 字段可以毫无问题地接受单精度浮点数。然而,当试图向这些字段中插入非数字值时,如“h”和“w”,MySQL 会引发一个错误,表示数据被截断。
最后,要查看已插入表中的数据,我们可以使用如下所示的 SELECT 语句 -
SELECT * FROM datatype_demo;
结果表如下 −
Other Representations of MySQL FLOAT
MySQL 有一个规定,以位形式为 FLOAT 数据类型指定精度范围(不是指数)。这些位指定在关键字 FLOAT 之后的括号内,即 FLOAT(p)。
但是,此精度值仅用于确定存储大小,并且仅容纳 7 位小数,范围从 0 到 23 位。如果精度位超过 23,则数据类型变为 DOUBLE。
Example
首先,我们将删除现有的“datatype_demo”表 -
DROP TABLE datatype_demo;
获得的输出如下 −
Query OK, 0 rows affected (0.01 sec)
然后,我们将创建一个新表“datatype_demo”,指定“HEIGHT”列的精度为 20 位 -
CREATE TABLE datatype_demo(
ID INT,
NAME VARCHAR(50),
HEIGHT FLOAT(20)
);
以下是上面代码的输出: -
Query OK, 0 rows affected (0.02 sec)
Verification
尽管我们指定了 20 位的精度,“HEIGHT”列仍将在单精度范围内存储浮点值,最多容纳 7 位小数。为了验证表定义,我们可以使用如下所示的 DESC 命令 -
DESC datatype_demo;
生成的表如下 -
如果精度位超过 23,则数据类型变为 DOUBLE。查看下面的查询 -
CREATE TABLE datatype_demo1(
ID INT,
NAME VARCHAR(50),
HEIGHT FLOAT(30)
);
我们得到以下输出 -
Query OK, 0 rows affected (0.02 sec)
同样,我们可以使用 DESC 命令验证表的定义 -
DESC datatype_demo1;
以下是要获得的表: