PostgreSQL Numeric类型
在本节中,我们将了解PostgreSQL 数字数据类型的工作原理,它允许我们存储数字数据。我们还看到了数字数据类型的示例。
什么是 PostgreSQL NUMERIC 数据类型?
在PostgreSQL中,Numeric 数据类型用于存储具有各种有效数字的数字。换句话说,我们可以说 PostgreSQL Numeric数据类型用于将数字数据指定到表中,这需要数量或货币金额,其中需要精度。
数值数据类型包含以下内容:
- 四字节和八字节浮点数
- 二、四和八字节整数
- 可选精度小数。
下表包含 PostgreSQL 支持的所有数值数据类型:
名称 | 存储空间 | 范围 | 描述 |
---|---|---|---|
smallint | 2个字节 | -32768 至 +32767 | 存储整数,小范围。 |
integer | 4字节 | -2147483648 至 +2147483647 | 存储整数 当你想存储典型的整数时使用这个。 |
bigint | 8字节 | -9223372036854775808 至 9223372036854775807 | 存储整数,范围大。 |
decimal | 多变的 | 小数点前最多131072位;小数点后最多 16383 位。 | 用户指定的精度,exact |
numeric | 多变的 | 小数点前最多131072位;小数点后最多 16383 位。 | 用户指定的精度,exact |
real | 4字节 | 6 位小数精度。 | 可变精度,不精确 |
double precision | 8字节 | 15位小数精度 | 可变精度,不精确 |
serial | 4字节 | 1至2147483647 | 自增整数 |
bigserial | 8字节 | 1 至 9223372036854775807 | 大型自动递增整数 |
PostgreSQL 数值数据类型的语法
PostgreSQL 数值数据类型的语法如下:
NUMERIC (precision, scale)
在上面的语法中,我们使用了以下参数:
范围 | 描述 |
---|---|
Numeric | 它是一个关键字,用于存储数字。 |
Precision | 它是总位数 |
Scale | 就小数部分而言,它是几位数字。 |
我们可以通过以下示例来理解精度和比例的概念:
假设我们有数字2356.78。在此数字中,精度为 6,小数位数为 2。
以下语法显示带有零刻度的数字数据类型:
NUMERIC (precision)
如果我们同时忽略precision 和 scale,我们可以有任何精度和 scale 达到上面提到的 precision 和 scale 的极限。
NUMERIC
如果我们不需要precision,我们就不能使用 Numeric 数据类型,因为对Numeric 值的计算通常比双精度、浮点数和整数慢。
PostgreSQL 数字数据类型示例
让我们看不同的例子来理解PostgreSQL 数字数据类型是如何工作的。
如果我们想要存储比Numeric 列的声明范围更广泛的值,PostgreSQL 会将值四舍五入到定义的小数位数。
为此,我们将在CREATE命令的帮助下创建一个新的表名Items表,并使用INSERT命令插入一些值。
在这里,如果表存在于特定数据库中,我们还使用drop 命令删除该表。
DROP TABLE IF EXISTS Items;
我们将通过在组织数据库中使用CREATE命令来创建Items表:
CREATE TABLE Items (
item_id SERIAL PRIMARY KEY,
item_name VARCHAR(100) NOT NULL,
item_price NUMERIC(5,2)
);
执行完以上命令后,Items表就创建成功了,如下截图所示:
生成Items表后,我们就可以使用INSERT命令将一些项目插入其中,其价格范围超过item_price列中声明的范围:
INSERT INTO Items (item_name, item_price)
VALUES
('Mercedes Benz ',300.512),
('Lincoln Continental',300.513),
('Audi A7',300.514);
执行完上面的命令后,我们会得到如下输出,显示该值已经成功插入到Items表中。
因为item_price列的小数位数是2,PostgreSQL 将值300.512,300.513 舍入。300.514到300.51。
创建并插入Items表的值后,我们将使用SELECT命令返回Items表的所有行:
SELECT * FROM Items;
执行上面的命令后,我们会得到如下结果:
如果我们想要存储一个精度超过声明精度的值,那么 PostgreSQL 将显示一个错误,如下例所示:
INSERT INTO Items (item_name, item_price)
VALUES ('Mercedes Benz',23457.44);
在执行上述命令时,我们将得到以下错误,即数字字段溢出,这意味着精度为 5 和小数位数为 2的字段必须舍入为绝对值,即小于10^3。
热门文章
优秀文章