PostgreSQL 数值
在本节中,我们将了解
PostgreSQL数值数据类型的工作原理,该数据类型允许我们存储数值数据。而且,我们还会看到
数字数据类型的
示例。
什么是PostgreSQL NUMERIC数据类型?
在 PostgreSQL 中,
数字数据类型用于
存储具有各种有效位数的数字数字位数。换句话说,我们可以说PostgreSQL数值数据类型用于将数字数据指定到表中,这需要要求精度的数量或货币金额。
数值数据类型包含以下内容:
四字节和八字节浮点数
两字节,四字节和八字节整数
可选精度的小数位。
下表包含了PostgreSQL支持的所有
数值数据类型:
名称 |
存储空间 |
范围 |
说明 |
smallint |
2个字节 |
-32768至+32767 |
存储整数,范围较小。 |
integer |
4个字节 |
-2147483648至+2147483647 |
存储整数要存储典型整数时使用此数字。 |
bigint |
8个字节 |
-9223372036854775808至9223372036854775807 |
存储整数,范围较大。 |
decimal |
变量 |
小数点前最多131072位;小数点后最多16383位数字。 |
用户指定的精度,精确 |
numeric |
变量 |
小数点前最多131072位数字;小数点后最多16383位数字。 |
用户指定的精度,精确 |
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、
注意: 在PostgreSQL中,数字数据类型的值最多可以在小数点前的131,072位,小数点后的16,383位。数值数据类型小数位数可以是正数(+)或零(0)。
以下语法使用
小数位零位显示数值数据类型:
如果忽略了
精度和小数位数,我们可以具有任意精度,并且可以达到上述精度和小数位数的极限。
注意: 在PostgreSQL中,Numeric和Decimal类型彼此对应,并且它们都遵循SQL标准。
如果我们不需要
精度,则由于数字
数值的计算通常较慢,因此我们无法使用数值数据类型比
双精度,浮点数和
整数。
PostgreSQL数值数据类型的示例
让我们请参阅不同的示例以了解
PostgreSQL数值数据类型的工作原理。
存储数值的示例
PostgreSQL将舍入该值如果我们要存储比
数字列的声明小数位数更广泛的值,则应使用定义的小数位数。
为此,我们将创建一个新的表名
<在
CREATE 命令的帮助下,strong> Items 表,并使用
插入 命令。
在
在此,我们还使用
drop命令 t o如果该表存在于特定数据库中,则将该表删除。
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 表的所有行:
输出
执行上述命令后,我们将得到以下结果:
如果我们要存储一个精度超过声明的精度的值,那么PostgreSQL将显示错误,如下面的示例所示:
INSERT INTO Items (item_name, item_price)
VALUES ('Mercedes Benz',23457.44);
输出
在执行上述命令时,我们将得到以下错误,即
数字字段溢出,这意味着具有
精度5和标度2 必须舍入为小于
10 ^ 3 的绝对值。
PostgreSQL NUMERIC数据类型和NaN的示例
让我们看一下PostgreSQL Numeric数据类型和NaN的示例示例。
如果要获取数值,则PostgreSQL NUMERIC数据类型也可以具有一个特殊的值,称为NaN,而
NaN 表示
not-a-number
在下面的示例中,我们将
item_id 1 的
item_price 更新为
NaN :
UPDATE Items
SET item_price = 'NaN'
WHERE item_id = 1;
输出
一旦执行上述命令,我们将获得以下消息窗口,该窗口显示特定值已成功更新到
Items 表。
注意: 在上面的Update语句中,我们使用单引号('')括住了NaN。
现在,我们已使用
SELECT 命令从
Items 表中获取所有记录:
输出
执行上面的语句后,我们将得到以下结果:
通常,NaN不等于任何数字,包括其自身,这意味着以下表达式
NaN = NaN 将返回
FALSE 。
但是,两个NaN值可以相等,并且NaN比其他数字更重要。此执行使
PostgreSQL 可以对数值进行分类,并在基于树的索引中使用它们。
根据项目的
Item_prices对项目进行分类,我们将使用以下命令:
SELECT * FROM Items
ORDER BY item_price DESC;
输出
执行上述命令后,我们将得到以下输出:
如我们在上面的屏幕截图中所见,
NaN 大于值
300.51 。
概述
在
PostgreSQL数值数据类型部分中,我们学习了以下主题:
PostgreSQL 数值数据类型可以使用数值列来存储数字。
PostgreSQL的数字数据类型可以与NaN(非数字)一起使用。