PostgreSQL数据类型总结

PostgreSQL数据库相比其他数据库,支持更多的数据类型,包括常用的数值类型、字符串类型、日期/时间类型外,还有几何类型、网络地址类型、xml类型和json类型,且还可以使用CREATE TYPE自行添加数据类型,本文主要介绍PostgreSQL数据库主要的数据类型

1. 数值类型

常用数值类型如下表所示:

名称别名存储大小范围描述与其他数据库对比
smallintint22字节-225~215-1有符号的2字节整数MySQL中smallint,Oracle中number(5)
integerint,int44字节-231~231-1有符号的4字节整数MySQL中int,Oracle中number(38,0)
bigintint88字节-263~263-1有符号的8字节整数MySQL中bigint,Oracle中number(38)
realfloat44字节单精度浮点数MySQL中float,Oracle中binary_float
double precisionfloat88字节双精度浮点数MySQL中double,Oracle中binary_double或number
numeric [(p, s)]decimal [(p, s)]可选择精度的精确数字MySQL中decimal[(p, s)],Oracle中NUMBER[(p, s)]
money8字节-92233720368547758.08~+92233720368547758.07货币金额

2. 自增类型

常用自增类型如下表所示:

名称别名存储大小范围描述与其他数据库对比
smallserialserial22字节2字节自增整数MySQL中自增字段,Oracle中序列
serialserial44字节4字节自增整数MySQL中自增字段,Oracle中序列
bigserialserial88字节8字节自增整数MySQL中自增字段,Oracle中序列

3. 布尔类型

名称别名存储大小范围描述与其他数据库对比
booleanbool1字节true/falseMySQL中boolean,Oracle中number(1)

4. 二进制类型

名称别名存储大小范围描述与其他数据库对比
bytea二进制数据MySQL中blob,Oracle中blob

5. 位串类型

名称别名存储大小范围描述与其他数据库对比
bit [ (n) ]固定长度位串MySQL中bit [ (n) ]
bit varying [ (n) ]varbit[ (n) ]可变长度位串

6. 字符串类型

名称别名存储大小范围描述与其他数据库对比
character (n)char (n),bpchar(n)n个字节固定长度字符串,不足会被空格填充MySQL中char(n)
character varying (n)varchar (n)最多n个字节可变长度字符串MySQL中varchar(n),Oracle中varchar(n)
bpcharn个字符可变不限制长度字符串,不足字符被空格填充
text可变长度字符串MySQL中text,Oracle中clob

7.日期时间类型

名称别名存储大小范围描述与其他数据库对比
timestamp [ (p) ] [without time zone]8字节4713BC~294276AD无时区的日期和时间
timestamp [ (p) ] [with time zone]8字节4713BC~294276AD有时区的日期和时间
date4字节4713BC~5874897AD日期
time [ (p) ] [without time zone]8字节00:00:00~24:00:00时间
time [ (p) ] [with time zone]12字节00:00:00+1559~24:00:00-1559有时区的时间
interval [fields] [(p)]16字节-178000000years~178000000years时间间隔

8. 枚举类型

枚举类型是包含一系列有序的静态值集合的一个数据类型,使用前需要先声明
枚举类型使用CREATE TYPE来创建,如下所示:

CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');

枚举创建后,就可以将其作为PostgresSQL预定义的类型使用

CREATE TABLE person (name text,current_mood mood
);
INSERT INTO person VALUES ('Moe', 'happy');

9. 几何类型

PostgreSQL提供了点、线、矩形、多边形等几何类型,这也是区别于其他数据库的地方,如下表所示:

名称别名存储大小描述表现形式
point16字节平面中的点(x,y)
line32字节无限长的直线{A,B,C}
lseg32字节有限线段((x1,y1),(x2,y2))
box32字节矩形框((x1,y1),(x2,y2))
path16+16n字节封闭路径(类似多边形)((x1,y1),…)
path16+16n字节开放路径[(x1,y1),…]
polygon40+16n字节多边形(类似封闭路径)((x1,y1),…)
circle24字节<(x,y),r>

10. 网络地址类型

PostgreSQL为IPv4、IPv6以及以太网MAC地址都提供了特有的类型,如下表所示:

名称存储大小描述
cidr7或19字节IPv4和IPv6网络地址
inet7或19字节IPv4和IPv6网络地址和主机地址
macaddr6字节以太网MAC地址
macaddr88字节以太网MAC地址(EUI-64)

11. XML类型

xml类型可用于存储XML数据,插入数据时会对输入的数据进行检查,使不符合XML标准的数据不能存放到数据库中,同时还提供了函数对其类型进行安全性检查,可以使用函数xmlparse将字符串转换为xml数据,如下所示:

XMLPARSE ( {DOCUMENT | CONTENT} value)

示例如下:

XMLPARSE (DOCUMENT '<?xml version="1.0"?><book><title>Manual</title><chapter>...</chapter></book>')
XMLPARSE (CONTENT 'abc<foo>bar</foo><bar>foo</bar>')

也可以使用以下两种方式

xml '<foo>bar</foo>'
'<foo>bar</foo>'::xml

12. JSON类型

JSON数据类型可以用来存储JSON数据,插入数据时会自动检测字符串是否为合法的JSON数据,同时也提供了丰富的函数

名称存储大小描述
json文本json数据
jsonb重新解析的二进制json数据

12.1. JSON和JSONB区别

  1. JSON类型是把输入的数据原封不动的存放到数据库中(存储前会做JSON语法校验),使用时需要重新解析数据。而JSONB类型是在存储时就把JSON解析为二进制格式,使用时无须再次解析,使用JSONB时性能会更高
  2. JSON串中key之间多余空格、key的顺序和重复key会保留,JSONB不会保留多余空格和重复key
  3. JSONB支持在其上建立索引,而JSON不支持

12.2. JSON类型与PostgreSQL数据库类型映射

当把一个JSON类型的字符串转换为JSONB类型时,JSON字符串内的数据类型实际上被转换成了PostgreSQL数据库中的类型,映射如下表所示:

JSON类型PostgreSQL类型注意事项
stringtext注意字符集的一些限制
numbernumericJSON中没有PostgreSQL中的"NaN"和"infinity"值
booleanbooleanJSON仅能接受小写的"true"和"false"
null(none)SQL中的NULL代表不同意思

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/5818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

过渡与动画

单元素/组件过渡 Vue在插入、更新或者移除 DOM 时&#xff0c;提供多种不同方式的过渡效果&#xff08;一个淡入淡出的效果&#xff09; 在条件渲染&#xff08;使用v-if&#xff09;、条件展示&#xff08;使用v-show&#xff09;、动态组件、组件根节点等情形中&#xff0c;可…

python算法题

需求 代码 class Solution:def searchInsert(self, nums: List[int], target: int) -> int:if max(nums) >target:for i in range(len(nums)-1):if nums[i1] > target and nums[i] <target:return i1if max(nums) <target:return len(nums)if min(nums) > …

操作系统(2)——进程线程

目录 小程一言专栏链接: [link](http://t.csdnimg.cn/8MJA9)基础概念线程详解进程详解进程间通信调度常用调度算法 重要问题哲学家进餐问题问题的描述策略 读者-写者问题问题的描述两种情况策略 总结进程线程一句话 小程一言 本操作系统专栏&#xff0c;是小程在学操作系统的过…

【tcl脚本实践Demo 1】文本生成、匹配、修改、读写

引言 在芯片设计的流程中,各种EDA工具在设计、综合、布局布线、验证、时序分析等等环节都会产出大量的文件信息。这些信息是海量的,如果单纯靠程序员自己查看信息效率很低并且很容易纰漏。所以脚本语言可以很好的解决这个问题,可以利用脚本语言匹配到敏感的信息,完成对信息…

let 和 const 区别

在JavaScript中&#xff0c;let 和 const 是两种用于声明变量的关键字&#xff0c;它们都是ES6&#xff08;ECMAScript 2015&#xff09;引入的新特性&#xff0c;旨在改进变量声明的方式&#xff0c;与传统的 var 关键字相比&#xff0c;提供了更清晰的变量作用域管理和更好的…

用VHDX的方式安装Windows系统

最近尝试了用VHDX的方式安装Windows系统&#xff0c;以下为测试操作的过程。 1.创建并附加虚拟硬盘 推荐使用图形界面操作&#xff0c;磁盘管理—操作—创建 VHD&#xff0c;选择虚拟硬盘位置&#xff0c;一般放在系统盘之外。虚拟硬盘格式建议选择 VHDX&#xff0c;虚拟硬盘类…

240 基于matlab的飞行轨迹仿真程序

基于matlab的飞行轨迹仿真程序&#xff0c;多种不同的飞行轨迹&#xff0c;输出经度、纬度、高度三维轨迹&#xff0c;三个方向的飞行速度。程序已调通&#xff0c;可直接运行。 240 飞行轨迹仿真 三维轨迹 飞行速度 - 小红书 (xiaohongshu.com)

限流的学习

限流算法&#xff1a; 滑动窗口算法 滑动日志算法 漏桶算法 令牌桶算法 redis分布式限流 1、固定窗口限流 固定窗口算法又叫计数器算法&#xff0c;是一种简单方便的限流算法。主要通过一个支持原子操作的计数器来累计 1 秒内的请求次数&#xff0c;当 1 秒内计数达到限流阈值…

C#知识|面向对象编程中实例方法的封装与应用总结

哈喽,你好,我是雷工! 本节学习面向对象编程中实例方法的封装与应用,以下为学习笔记。 01 方法定义 访问修饰符 返回值类型 方法名(参数1,参数2……) {//此处编写方法的主要内容,功能实现的具体过程 return 返回值;//如果方法有返回值需要此语句,如果没有返回值,那…

Golang图片验证码的使用

一、背景 最近在使用到Golang进行原生开发&#xff0c;注册和登录页面都涉及到图片验证码的功能。找了下第三方库的一些实现&#xff0c;发现了这个库用得还是蛮多的。并且支持很多类型的验证方式&#xff0c;例如支持数字类型、字母类型、音频验证码、中文验证码等等。 项目地…

深入理解MySQL中的Undo日志

在MySQL中&#xff0c;Undo日志是一个核心组件&#xff0c;尤其在使用InnoDB存储引擎时。它对保持数据库一致性、支持事务回滚、以及多版本并发控制&#xff08;MVCC&#xff09;等功能至关重要。本文将详细介绍Undo日志的基本知识、工作原理、作用以及如何管理它。 1. Undo日…

动态规划-回文子串问题

文章目录 1. 回文子串&#xff08;647&#xff09;2. 最长回文子串&#xff08;5&#xff09;3. 分割回文串 IV&#xff08;1745&#xff09;4. 分割回文串 II&#xff08;132&#xff09;5. 最长回文子序列&#xff08;516&#xff09;6. 让字符串成为回文串的最少插入次数&am…

Vue入门篇:样式冲突scoped,data函数,组件通信,prop data单向数据流,打包发布

这里写目录标题 1.组件的样式冲突scoped2.data函数3.组件通信1.两种组件关系分类和对应的组件通信方案2.父子通信方案的核心流程 4.prop & data、单向数据流5.打包发布6.打包优化:路由懒加载 1.组件的样式冲突scoped 默认情况:写在组件中的样式会全局生效→因此很容易造成多…

【Python从入门到进阶】53、Scrapy日志信息及日志级别

接上篇《52、CrawlSpider链接提取器的使用》 上一篇我们学习了基于规则进行跟踪和自动爬取网页数据的“特殊爬虫”CrawlSpider。本篇我们来学习Scrapy的日志信息及日志级别。 一、引言 1、日志在Scrapy中的重要性 在Scrapy框架中&#xff0c;日志扮演着至关重要的角色。日志…

十三、大模型项目部署与交付

1 硬件选型 CUDA 核心和 Tensor 核心 CUDA 核心&#xff1a;是NVIDIA开发的并行计算平台和编程模型&#xff0c;用于GPU上的能用计算&#xff0c;可做很多的工作。应用在游戏、图形渲染、天气预测和电影特效Tensor 核心&#xff1a;张量核心&#xff0c;专门设计用于深度学习…

前端开发框架Vue

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Vue概述 Vue.js&#xff08;简称Vue&#xff09;是由尤雨溪&#xff08;Evan You&#xff09;创建并维护的一款开源前端开发框架。Vue以其轻量级、易上手和高度灵活的特点&…

IoTDB 入门教程③——基于Linux系统快速安装启动和上手

文章目录 一、前文二、下载三、解压四、上传五、启动六、执行七、停止八、参考 一、前文 IoTDB入门教程——导读 二、下载 下载二进制可运行程序&#xff1a;https://dlcdn.apache.org/iotdb/1.3.1/apache-iotdb-1.3.1-all-bin.zip 历史版本下载&#xff1a;https://archive.…

YOLOv3模型在不同硬件平台上的性能表现有何差异?

YOLOv3模型在不同硬件平台上的性能表现可能会有显著差异&#xff0c;这主要受到以下因素的影响&#xff1a; 1. 计算能力&#xff1a;高性能的GPU&#xff08;如NVIDIA的高端系列&#xff09;或ASIC&#xff08;如Google的TPU&#xff09;可以更快地处理复杂的神经网络运算&am…

C——双向链表

一.链表的概念及结构 链表是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。什么意思呢&#xff1f;意思就是链表在物理结构上不一定是连续的&#xff0c;但在逻辑结构上一定是连续的。链表是由一个一个的节点连…

24五一杯ABC题完整思路+可执行代码+可视化图表(1)

2024五一赛A题保姆级建模思路20页1-3问可执行代码后续成品论文各类可视化图表&#xff08;完整版资料在文章最后&#xff09; 处理第一问的代码 其余各题的代码如下&#xff1a; A题保姆级建模思路20页&#xff1a;&#xff08;手把手教你如何建模&#xff09; 高清图片如下&am…