PostgreSQL 数据类型
数据类型指定要在表字段中存储的数据类型。创建表时,对于每一列,您必须使用数据类型。它标识特定的数据类型,例如整数,布尔值,浮点数等等。
在本节中,我们将讨论PostgreSQL中使用的各种数据类型。
在 PostgreSQL 中,每个数据库表都有许多列,并且每一列都有精确的数据类型。它支持广泛的数据类型。
此外,用户还可以使用CREATE TYPE SQL创建自己的自定义数据类型。 命令。这些数据类型具有以下优点:
性能: 如果我们正确有效地使用这些数据类型来存储数据值,它可以提高性能。
验证: 数据类型的正确使用涉及数据的验证和数据类型范围之外的数据的清除。
紧凑度: 它可以高效存储,因为列可以存储一种类型的值。
一致性: : 与相同数据类型的列相矛盾的活动可以提供可靠的结果,并且通常是最快的。
在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中,枚举数据类型包括一组静态的有序值。
类似于与各种编程语言兼容的
枚举类型。枚举数据类型在表中使用外键表示,以确保数据完整性。
例如:
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)数据。