MySQL DECIMAL类型
DECIMAL数据类型用于存储精确的数值。它类似于 INT 数据类型,用于保留精确精度的列,例如工资、价格等会计系统中的货币数据。MySQL 总是使用二进制格式来存储 DECIMAL 值。
一、MySQL DECIMAL类型 语法
以下是用于定义数据类型为 DECIMAL 的列的语法:
column_name DECIMAL (M, D);
参数说明:
- M:表示为值存储的有效数字的最大数量的精度。M 的范围必须在 1 到 65 之间。这里,M 的最大值为 65,这意味着对 DECIMAL 值的计算不超过 65 位。
- D:表示小数点M右边的总位数。D的范围必须在0到30之间,不能大于M。
上面的声明告诉该列可以存储 M 位 D 十进制意味着它取决于精度和比例。如果未定义 D,则默认值为 0。如果未指定 M,则默认值为 10。我们也可以使用DEC、FIXED、NUMERIC关键字代替 DECIMAL,因为它们是该数据类型的同义词。
由于 DECIMAL 类似于 INT 数据类型,它也可以接受UNSIGNED和ZEROFILL属性。如果我们使用无符号,则 DECIMAL 值不能接受负值。而如果用户使用 ZEROFILL 属性,MySQL 将 M 的值从 0 增加到列定义中指定的宽度。
二、MySQL DECIMAL类型 存储
MySQL使用二进制格式将值存储在 DECIMAL 列中,每九个十进制数字的倍数占用 4 个字节。它分别为每个值的整数和小数部分分配存储要求。MySQL 将前 9 个十进制数字打包成 4 个字节,其余数字(剩余数字)需要 4 个字节的一小部分。
剩余(剩余)数字所需的存储可以通过下表来理解:
剩余数字 | 字节数 |
---|---|
0 | 0 |
1-2 | 1 |
3-4 | 2 |
5-6 | 3 |
7-9 | 4 |
我们可以通过下面的例子来理解上表的说明:
假设 DECIMAL(20, 9) 小数部分有 9 位,整数部分有 20-9=11 位。接下来,小数部分占 4 个字节,整数部分占前 9 位的 4 个字节,剩下的数字需要 1 个字节,即 2。因此,上述数据类型列总共需要 9 个字节。
三、MySQL DECIMAL类型 示例
让我们首先在数据库中创建一个新表“ orders ”,其中包含三列:order_id、prod_name 和 price。在命令提示符下执行以下查询:
mysql> CREATE TABLE orders (order_id INT NOT NULL PRIMARY KEY, prod_name VARCHAR(35) NULL, price DECIMAL(15,3) NOT NULL);
接下来,我们需要将数据插入到新创建的表订单中。执行以下查询,将三条记录插入表中:
mysql> INSERT INTO orders(order_id, prod_name, price) VALUES (1,'Laptop', 15000.35), (2, 'iPhone', 20000.32), (3, 'Mouse', 200.32);
最后,运行这个语句来获取“orders”表:
mysql> SELECT * FROM orders;
我们将得到如下输出:
现在,我们将通过修改 price 列来查看 ZEROFILL 属性的使用,如下所示:
mysql> ALTER TABLE orders MODIFY price DECIMAL(15, 3) zerofill;
现在,再次运行以下语句以获取“Orders”表:
mysql> SELECT * FROM orders;
我们将得到如下输出,其中价格列中添加了许多零:
热门文章
优秀文章