6、PostgreSQL 数据类型之一:数字类型和货币类型
PostgreSQL 作为一个强大的开源关系型数据库管理系统,本身支持多种数据类型,包括标准 SQL 数据类型以及一些扩展数据类型。
PostgreSQL 支持多种数据类型的设计理念是为了满足不同应用场景的需求,提供更大的灵活性和数据处理能力。原因如下:
-
数据多样性:不同应用需要处理各种类型的数据,包括整数、文本、日期、时间、二进制数据等。支持多种数据类型使 PostgreSQL 可以适用于各种不同的数据处理任务。
-
数据完整性:使用正确的数据类型可以帮助确保数据的完整性和一致性。例如,将日期存储为日期类型可以防止无效日期的插入,而将整数存储为整数类型可以防止非数字字符的插入。
-
性能优化:不同数据类型的存储和处理方式可能不同,因此 PostgreSQL 可以根据数据类型进行性能优化。这包括索引、查询优化和存储策略的不同选择。
-
数据分析和报告:支持不同的数据类型使 PostgreSQL 成为一个强大的数据分析和报告工具。你可以存储和分析文本、数值、日期、时间、几何数据等,以满足各种分析需求。
-
灵活性:支持自定义数据类型的能力使用户可以定义自己的数据类型,以适应特定领域的需求。这提供了更高级别的灵活性。
-
兼容性:PostgreSQL 旨在兼容 SQL 标准,因此需要支持多种标准 SQL 数据类型。这有助于确保应用程序可以从其他数据库迁移到 PostgreSQL 而不需要大规模的代码更改。
-
适应不断演变的需求:不同的应用和不同的数据处理需求不断演变。支持多种数据类型可以使 PostgreSQL 适应这些不断变化的需求,而不需要对数据库架构进行重大更改。
提供多样性的数据类型支持是 PostgreSQL 的一个关键特性,使其成为一个强大、灵活且适应性强的关系型数据库管理系统,适用于各种应用和使用情境。这种多样性为开发人员提供了更多的选择,以满足其数据处理需求。
在这部分内容中,我们将深入探讨 PostgreSQL 数据类型的使用。
当我们在创建表时,需要为每个数据列明确指定所使用的数据类型,以决定我们希望在该列中存储什么样的数据。
这个做法有着很多好处:
-
一致性:对于相同数据类型的列执行操作会获得一致的结果,通常也是最高效的。
-
数据验证:正确地使用数据类型可确保数据格式的准确性,它可以拒绝超出数据类型所定义范围的数据。
-
紧凑存储:因为每个列可以存储特定类型的值,所以数据以更紧凑的方式存储,有效节省了存储空间。
-
性能提升:正确选择和使用数据类型可以更有效地存储数据,从而提高数据处理性能。这能够使你快速处理存储的值,提高系统性能。
PostgreSQL 支持多种不同的数据类型。此外,我们还可以使用SQL命令来创建自定义数据类型以满足特定需求。这些不同种类的数据类型将在接下来的部分详细讨论。
一、数字类型
数字类型在 PostgreSQL 中提供了不同精度和存储能力的选项,用于存储整数和浮点数。下面是一些常见的数字类型以及其特点:
-
整数类型:
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。
-
浮点数类型:
real:4 字节浮点数,通常范围从 1.18E-38 到 3.4E+38,用于单精度浮点数。double precision:8 字节浮点数,通常范围从 2.23E-308 到 1.8E+308,用于双精度浮点数。
-
可选精度的小数类型:
numeric或decimal:可用于存储精确的小数值,允许指定精度和标度。例如,numeric(10, 2)可以存储精确到小数点后两位的值。
这些数字类型提供了广泛的选项,以适应不同的数据存储需求。我们可以选择适合你数据范围和精度的类型,以确保数据的准确性和最佳性能。在 PostgreSQL 中,这些数字类型可以用于定义表的列,以存储不同类型的数值数据。
| 名称 | 存储大小 | 描述 | 范围 |
|---|---|---|---|
| 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 |
| decimal | 可变 | 用户指定精度,精确 | 小数点前最多 131,072 位;小数点后最多 16,383 位 |
| numeric | 可变 | 用户指定精度,精确 | 小数点前最多 131,072 位;小数点后最多 16,383 位 |
| real | 4 字节 | 可变精度,不精确 | 约 6 位小数精度 |
| 双精度 | 8 字节 | 可变精度,不精确 | 约 15 位十进制数字精度 |
| 小系列 | 2 字节 | 自增小整数 | 1 至 32,767 |
| serial | 4 字节 | 自增整数 | 1 至 2,147,483,647 |
| 大系列 | 8 字节 | 大自增整数 | 1 至 9,223,372,036,854,775,807 |
二、货币类型
PostgreSQL 中的 money 类型用于存储具有固定小数精度的货币金额。这种数据类型是专门设计用于处理货币数值的,以确保精确性和准确性。以下是关于 money 数据类型在使用中需要注意的一些重要信息:
-
数据类型名称: money
-
描述: 存储货币金额,具有固定的小数精度。
-
值的范围:
money类型可以存储任何表示货币金额的有效数值。它具有固定小数点精度,通常是两位小数。这可以确保金额的精确性和准确性。 -
强制转换: 可以将数字、整数和大整数等其他数值数据类型强制转换为
money类型。这使得在处理货币数据时,可以方便地进行计算和比较。 -
浮点数不建议: PostgreSQL 强烈不建议使用浮点数来处理货币。浮点数的存储和计算方式可能导致舍入误差,因此
money类型更适合处理货币金额,以确保精确的金融计算。
使用 money 数据类型是一种良好的实践,特别是在需要处理金融交易或货币金额的应用程序中,以确保数值的准确性和一致性。这有助于避免因舍入误差而引起的金融计算问题。
| 名称 | 存储大小 | 描述 | 范围 |
|---|---|---|---|
| money | 8 字节 | 货币金额 | -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的配置文件中进行配置: <bean class"com.test.interceptor.FirstInterceptor"></bean> …...
redis的实际使用
Redis是一种内存数据库,常用于缓存、会话管理、消息队列等。在项目中合理使用Redis可以提高系统性能和可扩展性。以下是一些使用Redis的建议: 1. 缓存常用数据:将经常使用的数据缓存在Redis中,以减少数据库的读取次数,…...
造车先做三蹦子-之二:自制数据集(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年,其目的是为浏览器显示的文档赋予动态行为。 1 Web编程基础 本节讲解如何编写Web应用中的js程序,如果将这些程序加载到浏览器,以及如何获取输入、产出输出,如何运行响应事件的异步代码。 1.1 js 脚本 虽然现在不…...
Linux内核VFS详解
Linux内核VFS是什么? Linux内核VFS(Virtual File System)是Linux操作系统中的一个关键组件,用于提供文件系统抽象层。它允许用户空间和内核空间的各个部分以一种一致的方式访问不同类型的文件系统,包括磁盘文件系统(如EXT4、XFS、NTFS)、网络文件系统(如NFS、CIFS)、…...
在自己的服务器上部署个人博客和开源项目:实现数字存在感
在数字时代,拥有自己的服务器不再是一项难以实现的任务。通过云计算和开源技术的广泛应用,个人可以轻松地拥有自己的服务器,并在其上部署个人博客以及开源项目,为自己在互联网上创造一个数字存在感。本文将介绍如何在自己的服务器…...
【AI视野·今日Robot 机器人论文速览 第五十九期】Fri, 20 Oct 2023
AI视野今日CS.Robotics 机器人学论文速览 Fri, 20 Oct 2023 Totally 29 papers 👉上期速览✈更多精彩请移步主页 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 - 对字符串字段创建索引
在数据库中,对字符串字段创建索引可以加速字符串字段的查询: 直接创建完整索引:这是最简单的方式,直接对整个字符串字段创建索引。这种方式占用的空间较大,但查询性能通常较好,特别是在精确匹配的情况下。…...
Qt pro文件中 CONFIG += debug 作用
作用 在 Qt 项目文件(.pro 文件)中,CONFIG debug 的作用是指定项目以调试模式进行构建。 当在项目文件中添加 debug 到 CONFIG 变量时,Qt 构建系统将使用调试配置来编译项目。 这意味着编译器将生成带有调试信息的可执行文件&a…...
java解析生成定时Cron表达式工具类
Cron表达式工具类CronUtil 构建Cron表达式 /****方法摘要:构建Cron表达式*param taskScheduleModel*return String*/public static String createCronExpression(TaskScheduleModel taskScheduleModel){StringBuffer cronExp new StringBuffer("");if(…...
庆祝1024
在CSDN1024这一天,我不禁回想起自己这几年来在这个平台上的经历。回忆着初来时的稚嫩,如今的迷茫与期待,我深深地感受到自己还需不断努力。 回想起八年前,我刚刚步入计算机科学与技术的领域,满怀激情地加入了CSDN这个高…...
时间格式记录
ISO 8601:这是一种国际标准的日期和时间表示方式,格式为YYYY-MM-DDTHH:mm:ss.sssZ,其中 YYYY 代表四位数年份,MM 代表月份,DD 代表天数,T 作为日期和时间的分隔符,HH 代表小时,mm 代…...
hive插入动态分区数据时,return code 2报错解决
目录 一、完整报错 二、原因 三、其他 一、完整报错 Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、原因 大概率是因为没有开启允许动态分区或单次动态分区个数太小了。 -- 动态分区前…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
