当前位置: 首页 > news >正文

6、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

相关文章:

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

PostgreSQL 作为一个强大的开源关系型数据库管理系统,本身支持多种数据类型,包括标准 SQL 数据类型以及一些扩展数据类型。 PostgreSQL 支持多种数据类型的设计理念是为了满足不同应用场景的需求,提供更大的灵活性和数据处理能力。原因如下&…...

计算机视觉与深度学习 | 基于点线融合的视觉惯性SLAM前端

===================================================== github:[https://github.com/MichaelBeechan] CSDN:[https://blog.csdn.net/u011344545] ===================================================== 引言 本文中将介绍视觉惯性SLAM的前端部分,首先是传感器数据处理…...

MDK与keilC51共存的方法

MDK与keilC51共存的方法 在网上搜的资料MDK与KeilC51安装顺序都搞反了,而且大家都没成功过,反倒是转发了很多错误的教程。 用此安装方法解决了MDK与KeilC51的共存问题。所有功能完美运行。 因为MDK功能比KeilC51多,所以要先安装KeilC51 1、先…...

c_指针

文章目录 *(p1)1表示第 1 行第 1 个元素的地址。如何理解呢?下标运算符的规则括号 int a; // 1.一个整数 int *a; // 2.一个指向整数的指针 int **a; // 3.一个指向指针的指针, 它所指向的指针又指向一个整数型数据 ;一个指向 …...

循环队列c语言版

一、循环队列结构体 typedef int QueueDataType; #define CQ_MAX_SIZE 10typedef struct CircularQueue {QueueDataType data[CQ_MAX_SIZE];/**标记队列首*/QueueDataType head;/**标记队列尾部*/QueueDataType rear;} CircularQueue; 二、循环队列操作函数声明 /**创建队…...

SprringMVC拦截器

1、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置&#xff1a; <bean class"com.test.interceptor.FirstInterceptor"></bean> …...

redis的实际使用

Redis是一种内存数据库&#xff0c;常用于缓存、会话管理、消息队列等。在项目中合理使用Redis可以提高系统性能和可扩展性。以下是一些使用Redis的建议&#xff1a; 1. 缓存常用数据&#xff1a;将经常使用的数据缓存在Redis中&#xff0c;以减少数据库的读取次数&#xff0c…...

造车先做三蹦子-之二:自制数据集(5x5数据集)230102

#Jupyter Notebook231001import torch import torch.nn as nn import torch.optim as optim# 定义模型 class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.fc1 = nn.Linear(25, 50)self.fc2 = nn.Linear(50, 6)def forward(self, x):x = x.view(-1, 25…...

JS操作DOM及CSS

JS创造于1994年&#xff0c;其目的是为浏览器显示的文档赋予动态行为。 1 Web编程基础 本节讲解如何编写Web应用中的js程序&#xff0c;如果将这些程序加载到浏览器&#xff0c;以及如何获取输入、产出输出&#xff0c;如何运行响应事件的异步代码。 1.1 js 脚本 虽然现在不…...

Linux内核VFS详解

Linux内核VFS是什么? Linux内核VFS(Virtual File System)是Linux操作系统中的一个关键组件,用于提供文件系统抽象层。它允许用户空间和内核空间的各个部分以一种一致的方式访问不同类型的文件系统,包括磁盘文件系统(如EXT4、XFS、NTFS)、网络文件系统(如NFS、CIFS)、…...

在自己的服务器上部署个人博客和开源项目:实现数字存在感

在数字时代&#xff0c;拥有自己的服务器不再是一项难以实现的任务。通过云计算和开源技术的广泛应用&#xff0c;个人可以轻松地拥有自己的服务器&#xff0c;并在其上部署个人博客以及开源项目&#xff0c;为自己在互联网上创造一个数字存在感。本文将介绍如何在自己的服务器…...

【AI视野·今日Robot 机器人论文速览 第五十九期】Fri, 20 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Fri, 20 Oct 2023 Totally 29 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers CCIL: Continuity-based Data Augmentation for Corrective Imitation Learning Authors Liyiming Ke, Yunchu Zhang, Abhay D…...

Chromium浏览器启动参数

文章目录 Chromium浏览器启动参数1. --disable-web-security2. --disable-gpu3. --incognito4. --no-sandbox5. --disable-infobars6. --disable-notifications7. --disable-extensions8. --disable-translate9. --disable-popup-blocking10. --remote-debugging-port=<port…...

【计算机视觉】MoCo v3 讲解

MoCo v3 论文信息 标题:An Empirical Study of Training Self-Supervised Vision Transformers 作者:Xinlei Chen, Saining Xie, Kaiming He 期刊:ICCV 2021 发布时间与更新时间:2021.04.05 2021.04.08 2021.05.05 2021.08.16 主题:计算机视觉、对比学习、MoCo arXiv:[21…...

MySQL - 对字符串字段创建索引

在数据库中&#xff0c;对字符串字段创建索引可以加速字符串字段的查询&#xff1a; 直接创建完整索引&#xff1a;这是最简单的方式&#xff0c;直接对整个字符串字段创建索引。这种方式占用的空间较大&#xff0c;但查询性能通常较好&#xff0c;特别是在精确匹配的情况下。…...

Qt pro文件中 CONFIG += debug 作用

作用 在 Qt 项目文件&#xff08;.pro 文件&#xff09;中&#xff0c;CONFIG debug 的作用是指定项目以调试模式进行构建。 当在项目文件中添加 debug 到 CONFIG 变量时&#xff0c;Qt 构建系统将使用调试配置来编译项目。 这意味着编译器将生成带有调试信息的可执行文件&a…...

java解析生成定时Cron表达式工具类

Cron表达式工具类CronUtil 构建Cron表达式 /****方法摘要&#xff1a;构建Cron表达式*param taskScheduleModel*return String*/public static String createCronExpression(TaskScheduleModel taskScheduleModel){StringBuffer cronExp new StringBuffer("");if(…...

庆祝1024

在CSDN1024这一天&#xff0c;我不禁回想起自己这几年来在这个平台上的经历。回忆着初来时的稚嫩&#xff0c;如今的迷茫与期待&#xff0c;我深深地感受到自己还需不断努力。 回想起八年前&#xff0c;我刚刚步入计算机科学与技术的领域&#xff0c;满怀激情地加入了CSDN这个高…...

时间格式记录

ISO 8601&#xff1a;这是一种国际标准的日期和时间表示方式&#xff0c;格式为YYYY-MM-DDTHH:mm:ss.sssZ&#xff0c;其中 YYYY 代表四位数年份&#xff0c;MM 代表月份&#xff0c;DD 代表天数&#xff0c;T 作为日期和时间的分隔符&#xff0c;HH 代表小时&#xff0c;mm 代…...

hive插入动态分区数据时,return code 2报错解决

目录 一、完整报错 二、原因 三、其他 一、完整报错 Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、原因 大概率是因为没有开启允许动态分区或单次动态分区个数太小了。 -- 动态分区前…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...