6、PostgreSQL 数据类型之一:数字类型和货币类型

news/2024/7/9 23:34:05 标签: 1024程序员节, 数据库, postgresql

PostgreSQL 作为一个强大的开源关系型数据库管理系统,本身支持多种数据类型,包括标准 SQL 数据类型以及一些扩展数据类型。

PostgreSQL 支持多种数据类型的设计理念是为了满足不同应用场景的需求,提供更大的灵活性和数据处理能力。原因如下:

  1. 数据多样性:不同应用需要处理各种类型的数据,包括整数、文本、日期、时间、二进制数据等。支持多种数据类型使 PostgreSQL 可以适用于各种不同的数据处理任务。

  2. 数据完整性:使用正确的数据类型可以帮助确保数据的完整性和一致性。例如,将日期存储为日期类型可以防止无效日期的插入,而将整数存储为整数类型可以防止非数字字符的插入。

  3. 性能优化:不同数据类型的存储和处理方式可能不同,因此 PostgreSQL 可以根据数据类型进行性能优化。这包括索引、查询优化和存储策略的不同选择。

  4. 数据分析和报告:支持不同的数据类型使 PostgreSQL 成为一个强大的数据分析和报告工具。你可以存储和分析文本、数值、日期、时间、几何数据等,以满足各种分析需求。

  5. 灵活性:支持自定义数据类型的能力使用户可以定义自己的数据类型,以适应特定领域的需求。这提供了更高级别的灵活性。

  6. 兼容性:PostgreSQL 旨在兼容 SQL 标准,因此需要支持多种标准 SQL 数据类型。这有助于确保应用程序可以从其他数据库迁移到 PostgreSQL 而不需要大规模的代码更改。

  7. 适应不断演变的需求:不同的应用和不同的数据处理需求不断演变。支持多种数据类型可以使 PostgreSQL 适应这些不断变化的需求,而不需要对数据库架构进行重大更改。

提供多样性的数据类型支持是 PostgreSQL 的一个关键特性,使其成为一个强大、灵活且适应性强的关系型数据库管理系统,适用于各种应用和使用情境。这种多样性为开发人员提供了更多的选择,以满足其数据处理需求。

在这部分内容中,我们将深入探讨 PostgreSQL 数据类型的使用。

当我们在创建表时,需要为每个数据列明确指定所使用的数据类型,以决定我们希望在该列中存储什么样的数据。

这个做法有着很多好处:

  1. 一致性:对于相同数据类型的列执行操作会获得一致的结果,通常也是最高效的。

  2. 数据验证:正确地使用数据类型可确保数据格式的准确性,它可以拒绝超出数据类型所定义范围的数据。

  3. 紧凑存储:因为每个列可以存储特定类型的值,所以数据以更紧凑的方式存储,有效节省了存储空间。

  4. 性能提升:正确选择和使用数据类型可以更有效地存储数据,从而提高数据处理性能。这能够使你快速处理存储的值,提高系统性能。

PostgreSQL 支持多种不同的数据类型。此外,我们还可以使用SQL命令来创建自定义数据类型以满足特定需求。这些不同种类的数据类型将在接下来的部分详细讨论。

一、数字类型

数字类型在 PostgreSQL 中提供了不同精度和存储能力的选项,用于存储整数和浮点数。下面是一些常见的数字类型以及其特点:

  1. 整数类型

    • smallint:2 字节整数,通常范围从 -32,768 到 32,767。
    • integer:4 字节整数,通常范围从 -2,147,483,648 到 2,147,483,647。
    • bigint:8 字节整数,非常大的范围,通常从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
  2. 浮点数类型

    • real:4 字节浮点数,通常范围从 1.18E-38 到 3.4E+38,用于单精度浮点数。
    • double precision:8 字节浮点数,通常范围从 2.23E-308 到 1.8E+308,用于双精度浮点数。
  3. 可选精度的小数类型

    • numericdecimal:可用于存储精确的小数值,允许指定精度和标度。例如,numeric(10, 2) 可以存储精确到小数点后两位的值。

这些数字类型提供了广泛的选项,以适应不同的数据存储需求。我们可以选择适合你数据范围和精度的类型,以确保数据的准确性和最佳性能。在 PostgreSQL 中,这些数字类型可以用于定义表的列,以存储不同类型的数值数据。

名称存储大小描述范围
smallint2 字节小范围整数-32,768 至 +32,767
integer4 字节整数的典型选择-2,147,483,648 至 +2,147,483,647
bigint8 字节大范围整数-9,223,372,036,854,775,808 至 9,223,372,036,854,775,807
decimal可变用户指定精度,精确小数点前最多 131,072 位;小数点后最多 16,383 位
numeric可变用户指定精度,精确小数点前最多 131,072 位;小数点后最多 16,383 位
real4 字节可变精度,不精确约 6 位小数精度
双精度8 字节可变精度,不精确约 15 位十进制数字精度
小系列2 字节自增小整数1 至 32,767
serial4 字节自增整数1 至 2,147,483,647
大系列8 字节大自增整数1 至 9,223,372,036,854,775,807

二、货币类型

PostgreSQL 中的 money 类型用于存储具有固定小数精度的货币金额。这种数据类型是专门设计用于处理货币数值的,以确保精确性和准确性。以下是关于 money 数据类型在使用中需要注意的一些重要信息:

  • 数据类型名称: money

  • 描述: 存储货币金额,具有固定的小数精度。

  • 值的范围: money 类型可以存储任何表示货币金额的有效数值。它具有固定小数点精度,通常是两位小数。这可以确保金额的精确性和准确性。

  • 强制转换: 可以将数字、整数和大整数等其他数值数据类型强制转换为 money 类型。这使得在处理货币数据时,可以方便地进行计算和比较。

  • 浮点数不建议: PostgreSQL 强烈不建议使用浮点数来处理货币。浮点数的存储和计算方式可能导致舍入误差,因此 money 类型更适合处理货币金额,以确保精确的金融计算。

使用 money 数据类型是一种良好的实践,特别是在需要处理金融交易或货币金额的应用程序中,以确保数值的准确性和一致性。这有助于避免因舍入误差而引起的金融计算问题。

名称存储大小描述范围
money8 字节货币金额-92233720368547758.08 至 +92233720368547758.07

http://www.niftyadmin.cn/n/5119641.html

相关文章

阿里巴巴中国站item_search_img按图搜索1688商品(拍立淘) API 返回值说明

1. 商品API:提供了搜索、详情、评价等与商品相关的接口,可以通过关键词搜索商品,获取商品详情、销量等信息。 2. 店铺API:提供了店铺信息、店铺内商品等接口,可以查询店铺的基本信息、主营类目、评分等,还可…

EtherCAT从站转modbus RTU协议转换网关用modbus slave测试的方法

远创智控YC-ECT-RTU通讯网关具有EtherCAT从站功能,主要功能是将EtherCAT网络和Modbus-RTU网络连接起来。在使用方面,本网关可以连接到EtherCAT总线中作为从站使用,也可以连接到Modbus-RTU总线中作为主站或从站使用。这款通讯网关还支持多种不…

《GB/T 8566-2022/ISO/IEC/IEEE:系统与软件工程生存周期过程》国家标准解读,附下载地址

关于企业架构、软件工程等相关内容,基本在行业内工作一段时间都能解释出各自的理解,网络资料更是知识爆炸,看似哪一种都对,其实相对都是个人理解,算不上严谨。 上周工作中涉及架构的企业标准编制审查,对严…

StartCoroutine/yield 返回模式在 Unity 中到底如何工作?

Unity3D协程详解 游戏中的许多过程都是在多个帧的过程中发生的。你有“密集”的过程,比如寻路,每个帧都努力工作,但会分成多个帧,以免对帧速率产生太大影响。您拥有“稀疏”进程,例如游戏触发器,它们在大多…

读高性能MySQL(第4版)笔记19_云端和合规性

1. 如何构建数据库环境 1.1. 托管MySQL 1.2. VM上构建 1.3. 天下没有免费的午餐,每一个选择都伴随着一系列的权衡 2. 托管MySQL 2.1. 服务商提供了一个可访问的数据库设置程序,而不需要用户深入了解MySQL的具体细节 2.2. 使用托管MySQL将缺乏很多的…

Flink几个性能调优

1 配置内存 操作场景 Flink是依赖内存计算,计算过程中内存不够对Flink的执行效率影响很大。可以通过监控GC(Garbage Collection),评估内存使用及剩余情况来判断内存是否变成性能瓶颈,并根据情况优化。 监控节点进程的…

Constellation 介绍:Chainlink 黑客马拉松

在 2020 年,Chainlink 举办了其第一次线上黑客马拉松。当时,DeFi 作为一个类别刚刚开始蓬勃发展,而 NFT 也只是刚刚起步。这次黑客马拉松吸引了来自 45 个国家的 1,000 多名注册参与者,并收到了来自 70 个项目提交。 从那时起&am…

【Maven教程】(九):使用 Maven 进行测试 ~

目录 1️⃣ account-captcha 1.1 account-captcha 1.2 account-captcha 的主代码 1.3 account-captcha的测试代码 2️⃣ maven-surefire-plugin 简介 3️⃣ 跳过测试 4️⃣ 动态指定要运行的测试用例 5️⃣ 包含与排除测试用例 6️⃣ 测试报告 6.1基本的测试报告 6.…