PostgreSQL 数字 PostgreSQL 数据类型 PostgreSQL 字符 PostgreSQL 数字 在本节中,我们将了解PostgreSQL 数字数据类型的工作原理,它允许我们存储数字数据。我们还看到了Numeric 数据类型的**示例**。 什么是 PostgreSQL NUMERIC 数据类型? 在PostgreSQL 中,Numeric 数据类型用于存储具有各种有效数字的数字。换句话说,我们可以说 PostgreSQL Numeric数据类型用于将数字数据指定到表中,需要精度要求的数量或货币金额。 数字数据类型包含以下内容: 四字节和八字节浮点数 二、四和八字节整数 可选精度小数。 下表包含PostgreSQL 支持的所有数值数据类型: 名称 存储大小 范围 描述 smallint 2 bytes -32768 至 +32767 存储整数,小范围。 integer 4bytes -2147483648 至 +2147483647 当你想存储典型的整数时,存储整数使用它。 bigint 8 bytes -9223372036854775808 至 9223372036854775807 存储整数,大范围。 decimal variable 小数点前最多 131072 位;小数点后最多 16383 位。 用户指定的精度,精确 numeric variable 小数点前最多 131072 位;小数点后最多 16383 位。 用户指定的精度,精确 real 4bytes 6 位十进制数字精度。 可变精度,不精确 double precision bytes 15位十进制数字精度 可变精度,不精确 serial 4bytes 1 至 2147483647 自增整数 bigserial 8bytes 1 至 9223372036854775807 大的自动递增整数 PostgreSQL 数字数据类型的语法 PostgreSQL 数值数据类型的语法如下: NUMERIC (precision, scale) 在上面的语法中,我们使用了以下参数: 范围 描述 Numeric 它是一个关键字,用于存储数字。 Precision 它是总位数 Scale 就分数部分而言,它是几位数字。 我们可以通过以下示例来理解精度和比例的概念: 假设我们有数字2356.78。在这个数字中,精度为 6,小数位数为 2。 注意:在 PostgreSQL 中,Numeric 数据类型最多可以有小数点前 131,072 位的值,小数点后 16,383 位。数字数据类型刻度可以是正 (+) 或零 (0)。 下面的语法显示带有零刻度的数字数据类型: NUMERIC (precision) 如果我们同时忽略precision 和 scale,我们可以有任何 precision 和 scale 达到上面提到的 precision 和 scale 的限制。 NUMERIC 注意:PostgreSQL 中,Numeric 和 Decimal 类型是一一对应的,都遵循 SQL 标准。 如果我们不需要precision,我们就不能使用 Numeric 数据类型,因为Numeric 值的计算通常比双精度、浮点数和整数慢。 PostgreSQL 数字数据类型示例 让我们看不同的例子来理解PostgreSQL Numeric 数据类型是如何工作的。 存储数值的示例 如果我们想要存储比Numeric 列的声明比例更广泛的值,PostgreSQL 会将值四舍五入到定义的小数位数。 为此,我们将在CREATE命令的帮助下创建一个新的表名Items表,并使用INSERT命令插入一些值。 在这里,我们还使用drop 命令删除特定数据库中存在的表。 DROP TABLE IF EXISTS Items; 我们将使用CREATE命令在Organization 数据库中创建Items\表: CREATE TABLE Items ( item_id SERIAL PRIMARY KEY, item_name VARCHAR(100) NOT NULL, item_price NUMERIC(5,2) ); 输出 该项目\表具有执行上述命令后成功创建,如图中下面的截图: 一旦生成了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 的**绝对值。 PostgreSQL NUMERIC 数据类型和 NaN 示例 让我们看看 PostgreSQL 数字数据类型和 NaN 的示例示例。 如果我们想获取数值,那么 PostgreSQL NUMERIC 数据类型也可以有一个特殊的值叫做 NaN,而NaN代表not-a-number 在下面的例子中,我们将更新ITEM_PRICE的ITEM_ID 1到NaN的: UPDATE Items SET item_price = 'NaN' WHERE item_id = 1; 输出 执行上述命令后,我们将获得以下消息窗口,其中显示特定值已成功更新到Items\表中。 注意:在上面的 Update 语句中,我们使用单引号 ('') 将 NaN 括起来。 现在我们已经使用SELECT命令从Items\表中获取所有记录: SELECT * FROM Items; 输出 执行上述语句后,我们将得到以下结果: 通常,NaN 不等于任何数字,包括其自身,这意味着以下表达式NaN = NaN将返回FALSE。 但是,两个 NaN 值可以是等价的,并且 NaN 比其他数字更重要。此执行允许PostgreSQL对数值进行分类并在基于树的索引中使用它们。 要根据商品的Item_prices对商品进行分类,我们将使用以下命令: SELECT * FROM Items ORDER BY item_price DESC; 输出 执行上述命令后,我们将得到以下输出: 正如我们在上面的屏幕截图中看到的,NaN大于值300.51。 概述 在PostgreSQL 数字数据类型部分,我们学习了以下主题: PostgreSQL Numeric 数据类型可以使用 Numeric 列来存储数字。 PostgreSQL数字数据类型可以与 NaN(非数字)一起使用。 PostgreSQL 数据类型 PostgreSQL 字符