PostgreSQL 数据类型
数据类型指定要在表字段中存储的数据类型。创建表时,对于每一列,您必须使用一种数据类型。它标识特定类型的数据,如整数、布尔值、浮点数等。
在本节中,我们将讨论 PostgreSQL 中使用的各种数据类型。
在PostgreSQL中,每个数据库表都有很多列,并且每一列都有精确的数据类型。它支持广泛的数据类型。
此外,用户可以使用 CREATE TYPE SQL命令创建他们的自定义数据类型。并且这些数据类型具有以下优点:
- 性能:如果我们正确有效地使用这些数据类型来存储数据值,它会提高我们的性能。
- 验证:数据类型的正确使用涉及数据验证和排除数据类型范围之外的数据。
- 紧凑性:它存储高效,因为列可以存储单一类型的值。
- 一致性:相同数据类型的列相互矛盾的活动提供可靠的结果,通常是最快的。
在 PostgreSQL 中,我们有很多数据类型;让我们一一了解它们:
- Numeric 数据类型
- Character 数据类型
- Date/time数据类型
- Monetary数据类型
- Binary数据类型
- Boolean 数据类型
- Enumerated 数据类型
- Geometric 数据类型
- Text 数据类型
- UUID 数据类型
- 网络地址类型
- JSON数据类型
- 位串类型
- XML 数据类型
- Range 数据类型
- 数组
- 复合数据类型
- 对象标识符类型
- 伪数据类型
- pg-Isn 数据类型
Numeric数据类型
数值数据类型用于指定表格中的数值数据。它包含以下内容:
- 四字节和八字节浮点数
- 二、四和八字节整数
- 可选精度小数。
下表包含 PostgreSQL 支持的所有数字数据类型:
名称 | 描述 | 存储大小 | 范围 |
---|---|---|---|
smallint | 存储整数,小范围。 | 2个字节 | -32768 至 +32767 |
integer | 存储整数。当你想存储典型的整数时使用它。 | 4字节 | -2147483648 至 +2147483647 |
bigint | 存储整数,范围大。 | 8字节 | -9223372036854775808 至 9223372036854775807 |
decimal | 用户指定的精度,exact | 多变的 | 小数点前最多131072位;小数点后最多 16383 位。 |
numeric | 用户指定的精度,exact | 多变的 |
小数点前最多131072位;小数点后最多 16383 位。
|
real |
可变精度,不精确
|
4字节 | 6 位小数精度。 |
double precision | 可变精度,不精确 | 8字节 | 15位小数精度 |
serial | 自增整数 | 4字节 | 1至2147483647 |
bigserial | 大型自动递增整数 | 8字节 | 1 至 9223372036854775807 |
Character数据类型
在 PostgreSQL 中,我们有各种通用的字符数据类型,这些数据类型用于表示字符类型值。
下表包含 PostgreSQL 支持的所有字符数据类型:
数据类型 | 解释 |
---|---|
char(size) |
这里的大小是要存储的字符数。固定长度的字符串。右边的空格填充为相等大小的字符。
|
character(size) | 这里的大小是要存储的字符数。固定长度的字符串。右边的空格填充为相等大小的字符。 |
varchar(size) | 这里的大小是要存储的字符数。变长字符串。 |
character varying(size) | 这里的大小是要存储的字符数。变长字符串。 |
text | 变长字符串。 |
Date/Time数据类型
PostgreSQL 支持完整的 SQL日期和时间数据类型集。日期/时间数据类型用于表示使用日期和时间值的列。根据公历,计算日期。
下表包含 PostgreSQL 支持的所有日期/时间数据类型:
名称 | 描述 | 存储空间 | 最小值 | 最大值 | 解析度 |
---|---|---|---|---|---|
timestamp [ (p) ] [ 没有时区 ] | 日期和时间(无时区) | 8字节 | 公元前 4713 年 | 294276 广告 | 1微秒/14位 |
带时区的timestamp [ (p) ] | 日期和时间,带时区 | 8字节 | 公元前 4713 年 | 294276 广告 | 1微秒/14位 |
date | 日期(没有时间) | 4字节 | 公元前 4713 年 | 5874897 广告 | 1天 |
time [ (p) ] [ 没有时区 ] | 一天中的时间(无日期) | 8字节 | 00:00:00 | 24:00:00 | 1微秒/14位 |
带时区的time [ (p) ] | 仅一天中的时间,带时区 | 12字节 | 00:00:00+1459 | 24:00:00-1459 | 1微秒/14位 |
interval [ 字段 ] [ (p) ] | 时间间隔 | 12字节 | -178000000 年 | 17800万年 | 1微秒/14位 |
货币类型:
名称 | 描述 | 存储空间 | 范围 |
---|---|---|---|
money | 货币金额 | 8字节 | -92233720368547758.08 至 +92233720368547758.07 |
二进制数据类型
bytea数据类型允许存储二进制字符串,如下表所示:
名称 | 存储空间 | 描述 |
---|---|---|
bytea | 1 或 4 个字节加上实际的二进制字符串 | 变长二进制字符串 |
布尔型
PostgreSQL 包含标准的 SQL 类型boolean;布尔类型有许多状态,例如true、false和第三种状态unknown,由 SQL 空值表示。
名称 | 描述 | 存储空间 |
---|---|---|
boolean | 它指定真或假的状态。 | 1字节 |
枚举类型
在 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字节 | 圆圈 | <(x,y),r>(中心点和半径) |
热门文章
优秀文章