在本节中,无涯教程将了解 PostgreSQL数值数据类型的工作原理,该数据类型使无涯教程能够存储数值数据。而且,无涯教程还会看到数字数据类型的示例。
在 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 | 8个字节 | 15位小数位数精度 |
serial | 4个字节 | 1至2147483647 |
bigserial | 8个字节 | 1至9223372036854775807 |
PostgreSQL Numeric数据类型的语法如下:
NUMERIC (precision, scale)
假设无涯教程有数字 2356.78。在这个数字中,精度是6 ,而 scale 是2。
以下语法显示具有小数位零位的数值数据类型:
NUMERIC (precision)
而且,如果无涯教程同时忽略了 precision and scale ,则可以具有任何精度和比例,直到达到上述精度和比例的限制。
NUMERIC
让无涯教程看到不同的例子来了解 postgreSQL数字数据类型工作。
如果无涯教程要存储的值比 Numeric列的声明范围,则PostgreSQL会将值四舍五入为定义的小数位数。
在这里,无涯教程还使用 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 命令返回所有行
SELECT * FROM Items;
执行完上述命令后,无涯教程将得到以下结果:
如果无涯教程要存储一个精度超过声明精度的值,那么PostgreSQL将显示错误,如下面的示例所示:
INSERT INTO Items (item_name, item_price) VALUES ('Mercedes Benz',23457.44);
在执行上述命令时,无涯教程将收到以下错误,即数字字段溢出,这意味着具有精度5和小数位2 的字段必须四舍五入为绝对值。小于 10 ^ 3 。
让无涯教程看一下PostgreSQL数值数据类型和NaN的示例示例。
如果无涯教程想获取数值,那么PostgreSQL NUMERIC数据类型也可以有一个特殊的值,称为NaN,而 NaN 代表非数字
在下面的示例中,无涯教程将更新 item_id 1 到 nan 的 item_price :
UPDATE Items SET item_price = 'NaN' WHERE item_id = 1;
一旦执行上述命令,无涯教程将获得以下消息窗口,该窗口显示特定值已成功更新到 Items 表中。
现在,无涯教程已使用 SELECT 命令从 Items 表中获取所有记录:
SELECT * FROM Items;
执行完上面的语句后,无涯教程将得到以下结果:
要根据商品的 Item_prices 对商品进行分类,无涯教程将使用以下命令:
SELECT * FROM Items ORDER BY item_price DESC;
执行上述命令后,无涯教程将获得以下输出:
正如无涯教程在上面的屏幕截图中看到的, NaN 大于值 300.51 。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)