PostgreSQL教程

PostgreSQL 数据类型

数据类型指定要在表字段中存储的数据类型。创建表时,对于每一列,您必须使用数据类型。它标识特定的数据类型,例如整数,布尔值,浮点数等等。
在本节中,我们将讨论PostgreSQL中使用的各种数据类型。
在 PostgreSQL 中,每个数据库表都有许多列,并且每一列都有精确的数据类型。它支持广泛的数据类型。
此外,用户还可以使用CREATE TYPE SQL创建自己的自定义数据类型。 命令。这些数据类型具有以下优点:
性能: 如果我们正确有效地使用这些数据类型来存储数据值,它可以提高性能。 验证: 数据类型的正确使用涉及数据的验证和数据类型范围之外的数据的清除。 紧凑度: 它可以高效存储,因为列可以存储一种类型的值。 一致性: : 与相同数据类型的列相矛盾的活动可以提供可靠的结果,并且通常是最快的。
在PostgreSQL中,我们有许多数据类型集。让我们一一理解它们:
PostgreSQL数据类型 数字数据类型 字符数据类型 日期/时间数据类型 货币数据类型 二进制数据类型 布尔数据类型 枚举数据类型 几何数据类型 文本搜索数据类型 UUID数据类型 网络地址类型 JSON数据类型 位字符串类型 XML数据类型 范围数据类型 数组 复合数据类型 对象标识符类型 伪数据类型 pg-Isn数据类型

数值数据类型

数值数据类型用于将数字数据指定到表中。它包含以下内容:
四字节和八字节浮点数 两字节,四字节和八字节整数 可选精度的小数位
下表包含了PostgreSQL支持的所有 数字数据类型:
名称 说明 存储大小 范围
smallint 存储整数,范围较小。 2个字节 -32768至+32767
integer 存储整数。当您要存储典型整数时,请使用此数字。 4个字节 -2147483648至+2147483647
bigint 存储整数,范围较大。 8个字节 -9223372036854775808至9223372036854775807
decimal 用户指定的精度,精确 变量 小数点前最多131072位数字;小数点后最多16383位数字。
numeric 用户指定的精度,精确 变量 小数点前最多131072位数字;小数点后最多16383位数字。
real 精度不精确 4个字节 6个十进制数字精度。
double precision 变量精度,不精确 8个字节 15位小数位数精度
serial 自动递增整数 4个字节 1至2147483647
bigserial 大自动递增整数 8个字节 1至9223372036854775807

字符数据类型

在PostgreSQL中,我们有各种通用字符数据类型,这些数据类型用于表示字符类型值。
下表包含PostgreSQL支持的所有 字符数据类型:
数据类型 说明
char(size) 大小是要存储的字符数。定长字符串。在右边填充空格以等于大小的字符。
character(size) 这里的大小是要存储的字符数。定长字符串。在右边填充空格以等于大小的字符。
varchar(size) 大小是要存储的字符数。可变长度的字符串。
character varying(size) 大小是要存储的字符数。可变长度的字符串。
text 可变长度字符串。

日期/时间数据类型

PostgreSQL支持完整的SQL 日期和时间数据类型。日期/时间数据类型用于使用日期和时间值表示列。根据公历计算日期。
下表包含PostgreSQL支持的所有 日期/时间数据类型:
名称 说明 存储空间 最小值 最大值 决议
timestamp [ (p) ] [ without time zone ] 日期和时间(无时区) 8个字节 4713 bc 294276广告 1微秒/14位数字
timestamp [ (p) ] with time zone 日期和时间,以及时区 8个字节 4713 bc 294276广告 1微秒/14位数字
date 日期(一天中没有时间) 4个字节 4713 bc 5874897广告 1天
time [ (p) ] [ without time zone ] 一天中的时间(无日期) 8个字节 00:00:00 24:00:00 1微秒/14位数字
time [ (p) ] with time zone 只有一天中的时间,带有时区 12个字节 00: 00: 00 + 1459 24: 00: 00-1459 1微秒/14位数字
interval [ fields ] [ (p) ] 时间间隔 12个字节 -178000000年 178000000年 1微秒/14位数字

货币类型:

名称 说明 存储空间 范围
money 货币金额 8个字节 -92233720368547758758.08至+92233720368547758.07

二进制数据类型

bytea 数据类型允许存储二进制字符串,如下表所示:
名称 存储空间 说明
bytea 1或4个字节加上实际的二进制字符串 可变长度二进制字符串

布尔类型

PostgreSQL包含标准SQL类型 布尔;布尔类型具有许多状态,例如 true,false 和用SQL空值表示的第三种状态 unknown
名称 说明 存储空间
boolean 它指定是或否的状态。 1个字节
布尔数据类型输入函数接收以下针对 true和false 状态的字符串演示:
PostgreSQL数据类型

枚举类型

在PostgreSQL中,枚举数据类型包括一组静态的有序值。
类似于与各种编程语言兼容的 枚举类型。枚举数据类型在表中使用外键表示,以确保数据完整性。
例如:
CREATE TYPE fruits_name AS ENUM
('Mango','Apple','Orange','Strawberry')

几何数据类型

几何数据类型表示二维空间对象。最基本的类型,即要点,构成了所有其他类型的基础。
名称 存储空间 表示形式 说明
point 16个字节 在飞机上指向 (x,y)
line 32字节 无限行(未完全实现) (((x1,y1),(x2,y2))
lseg 32字节 有限线段 (((x1,y1),(x2,y2))
box 32字节 矩形框 (((x1,y1),(x2,y2))
path 16 + 16n字节 封闭路径(类似于多边形) (((x1,y1),...)
path 16 + 16n字节 打开路径 [(x1,y1),...]
polygon 40 + 16n 多边形(类似于封闭路径) (((x1,y1),...)
circle 24个字节 circle <(x,y),r>(中心点和半径)

文本搜索数据类型

在PostgreSQL中,全文搜索数据类型用于搜索自然语言文档的集合。我们有两类与全文本搜索兼容的数据类型。
数据类型 说明
tsvector 它用于以一种形式显示文档,从而增强了文本搜索。
tsquery 它用于表示文本查询。

UUID数据类型

UUID表示通用唯一标识符是一种128位的数量,由算法创建。这是最适合主键的数据类型。 UUID通过由连字符分隔的多个集合写为一组小写的十六进制数字。
例如:
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
注意: PostgreSQL还同意采用其他形式的UUID输入,例如不使用连字符,所有大写字母,大括号等。

网络地址数据类型

PostgreSQL提供了用于存储 Mac地址,IPv4和IPv6的数据类型,可以在下表中看到。它将增强除纯文本类型之外的这些类型以包含网络地址,因为它们提供了输入错误检查以及特定的功能和运算符。
下表包含了所有 网络地址数据类型: PostgreSQL支持:
数据类型 说明 存储空间
inet 它存储IPv4和IPv6主机和网络。 7或19个字节
cidr 它用于存储IPv4和IPv6网络。 7或19个字节
macaddr 它存储MAC地址。 6个字节

JSON数据类型

PostgreSQL提供了两种数据类型来存储JSON(JavaScript对象表示法)数据。
JSON JSONB
Json
这是具有 JSON 验证的文本数据类型的扩展。在这种情况下,我们可以快速插入数据,但是数据检索相对较慢。它以包含空格的方式保存输入的数据。
Jsonb
它是 JSON 数据。它还与索引兼容,并且还改善了空白以使检索更快。在这种情况下,插入速度很慢,但是数据检索却更快,并且在数据检索上需要重新处理。数据类型包含两个字符串类别,分别为 1和0 。可以在这些字符串的帮助下存储位掩码。在此,我们有两种 SQL位,例如:
位数不等( n ) 位( n )
在这里, n 是一个正整数。

XML类型

在PostgreSQL中,XML数据类型用于存储 XML 数据。 XML数据类型的功能是检查输入的XML是否格式正确,并且还具有用于对其执行类型安全操作的支持功能。
例如:
XMLPARSE (DOCUMENT '<?xml version="1.0"?><book><title>PostgreSQL</title><chapter>...</chapter></book>')

范围类型

这些数据类型用于显示某些元素类型的值的范围,称为范围的子类型。它还表示单个范围值中的几个值元素。在此,我们还可以创建范围类型。
在PostgreSQL中,我们具有以下内置范围类型:
内置范围类型 说明
tsrange 没有时区的时间戳范围
tstzrange 带有时区的时间戳记范围
daterange 日期范围
int4range 整数范围
int8range bigint的范围
numrange 数字范围

数组类型

在这种情况下,PostgreSQL提供了一列表作为可变长度和多维数组。我们可以创建任何用户定义的基本类型,内置,复合和枚举类型数组。
在这里,我们可以对数组执行各种操作,例如声明,插入,访问,修改和搜索。

复合类型

在PostgreSQL中,复合数据类型用于表示行的结构或记录为文件名和数据类型的列表。

伪数据类型

在PostgreSQL中,数据类型是 伪类型,用于包含许多特殊用途的条目。并且它用于声明结果类型或函数的参数,但与用作列数据类型不兼容。
下表包含一些常用的 > PostgreSQL支持的数据类型:
伪数据类型 说明
any 它表明函数可以接受任何输入数据类型。
anyelement 它接受任何数据类型。
anyarray 它显示了一个接受任何数组数据类型的函数
anyenum 它接受任何枚举数据类型
anyrange 它接受任何范围的数据类型
cstring 它用于指定一个函数接受或返回以空值结尾的C字符串。
language_handler 声明了过程语言调用处理程序以返回language_handler。
fdw_handler 声明了fdw(外部数据包装器)处理程序以返回fdw_handler。
record 它用于指定采用或返回未指定行类型的函数。
trigger 声明返回触发器。
pg_ddl_command 它用来表示事件触发器可用的DDL命令。
void 用于指定函数不返回任何值。

对象标识符(OID)类型

这些类型的数据类型用作多个系统表的主键。 oid 类型表示对象标识符,当前实现为无符号的四字节整数。在大型数据库中,甚至在大型单个表中,它都不大足以提供数据库范围内的个性。
对象标识符用于引用系统表。除了比较之外,oid类型本身很少有可以转换为整数的操作,并且可以使用标准整数运算符进行操作。
下表包含所有 对象标识符数据PostgreSQL支持的类型:
名称 说明 参考 值示例
oid 数字对象标识符 任何 564182
regproc 功能名称 pg_proc 总和
regprocedure 具有参数类型的函数 pg_proc sum(int4)
regoper 操作员姓名 pg_operator +
regoperator 具有参数类型的运算符 pg_operator *(integer,integer)或-(NONE,integer)
regclass 关系名称 pg_class pg_type
regtype 数据类型名称 pg_type 整数
regnamespace 命名空间名称 pg_namespace pg_catalog
regconfig 文本搜索配置 pg_ts_config 英语
regdictionary 文本搜索字典 pg_ts_dict 简单

pg_lsn类型

pg_lsn 数据类型可用于存储日志序列号(LSN)数据,即指向位置的指针在XLOG中。它用于表示XLogRecPtr和PostgreSQL的内部系统类型。 pg_lsn类型与标准比较运算符兼容,例如 >和=。
注意:
数据类型,我们可以参考以下几点:
如果我们有IEEE 754数据源,则可以使用 float数据类型 对于整数数据类型,我们可以使用 int 请勿使用字符 如果要限制输入,可以应用 text 数据类型。 当我们人数众多时,我们只能使用 bigint

概述

字符数据类型用于存储文本值。 网络地址类型用于优化网络数据的存储。 二进制字符串是字节或八位字节的分类。 PostgreSQL提供两种不同类型的数字,例如浮点数和整数 范围数据类型用于显示某些元素类型的值范围。 布尔值数据类型具有三个值,例如True,False和Null。 UUID 数据类型是128位的数量,它是由算法得出的。 复合数据类型用于表示行或记录的结构。 PostgreSQL,枚举数据类型,很少用于展示修改后的信息,例如分支机构ID或国家/地区代码。 要定义几种格式的日期和时间信息,PostgreSQL提供了日期和时间数据类型。 对象标识符数据类型表示对象标识符。 PostgreSQL设计了文本搜索数据以支持全文搜索。 几何数据类型用于表示二维空间对象。 在PostgreSQL中,伪类型用于许多特殊用途的条目。 pg_lsn 数据类型用于存储日志序列号(LSN)数据。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4