列出PostgreSQL中的各种数据类型。
封面图
•
2025-10-21
•
PostgreSQL
101
0
0
0
PostgreSQL 是一个功能强大的开源关系型数据库系统,支持多种数据类型。以下是 PostgreSQL 中常见的数据类型分类及其示例: --- ## 一、基本数据类型(Built-in Data Types) ### 1. 数值类型 - `SMALLINT`:2 字节整数(-32768 到 32767) - `INTEGER` 或 `INT`:4 字节整数(-2147483648 到 2147483647) - `BIGINT`:8 字节整数(范围更大) - `DECIMAL` 或 `NUMERIC`:精确小数 - `REAL`:单精度浮点数(4 字节) - `DOUBLE PRECISION`:双精度浮点数(8 字节) - `SERIAL`:自增整数(用于主键) - `BIGSERIAL`:大范围的自增整数 --- ### 2. 字符串类型 - `CHAR(n)`:定长字符串(最大 n 字节) - `VARCHAR(n)` 或 `TEXT`:变长字符串(`TEXT` 没有长度限制) - `BPCHAR`:与 `CHAR` 类似 - `NAME`:用于存储表名或列名(内部使用) --- ### 3. 二进制数据类型 - `BYTEA`:二进制数据 --- ### 4. 日期和时间类型 - `DATE`:日期(年-月-日) - `TIME`:时间(时:分:秒) - `TIMESTAMP`:日期和时间(带时区) - `TIMESTAMPTZ` 或 `TIMESTAMP WITH TIME ZONE` - `INTERVAL`:时间间隔(如 1 day 2 hours) - `TIME WITH TIME ZONE` - `TIMESTAMP WITHOUT TIME ZONE` --- ### 5. 布尔类型 - `BOOLEAN` 或 `BOOL`:`TRUE` / `FALSE` / `NULL` --- ### 6. 枚举类型(ENUM) - `ENUM`:用户定义的有限集合(例如:'red', 'green', 'blue') --- ### 7. 网络地址类型 - `INET`:IPv4 或 IPv6 地址 - `CIDR`:网络地址(如 192.168.1.0/24) - `MACADDR`:MAC 地址 --- ### 8. UUID 类型 - `UUID`:通用唯一标识符(如 `550e8400-e29b-41d4-a716-446655440000`) --- ### 9. JSON 类型 - `JSON`:存储 JSON 格式数据 - `JSONB`:以二进制格式存储 JSON 数据(更高效) --- ## 二、数组类型(Array Types) PostgreSQL 支持对任何基本类型创建数组: ```sql INT[] -- 整数数组 TEXT[] -- 字符串数组 DATE[] -- 日期数组 ``` 示例: ```sql SELECT ARRAY[1, 2, 3]; SELECT ARRAY['apple', 'banana', 'cherry']; ``` --- ## 三、复合类型(Composite Types) 复合类型由多个字段组成,通常用于表结构中。 例如: ```sql CREATE TYPE person AS ( name TEXT, age INT ); ``` --- ## 四、范围类型(Range Types) 用于表示数值、日期等的区间范围。 - `INT4RANGE`:整数范围 - `TSTZRANGE`:时间戳范围 - `NUMRANGE`:数值范围 - `TSRANGE`:时间范围 - `DATERANGE`:日期范围 示例: ```sql SELECT int4range(10, 20); SELECT tsrange('2023-01-01', '2023-12-31'); ``` --- ## 五、几何类型(Geometric Types) 用于存储几何图形数据: - `POINT`:点(x, y) - `LINE`:直线 - `LSEG`:线段 - `BOX`:矩形框 - `PATH`:路径 - `POLYGON`:多边形 - `CIRCLE`:圆 --- ## 六、网络类型(Network Address Types) - `INET`:IP 地址 - `CIDR`:IP 网络 - `MACADDR`:MAC 地址 --- ## 七、其他特殊类型 ### 1. OID(对象标识符) - `OID`:系统分配的唯一标识符(通常不推荐直接使用) ### 2. 大对象(Large Objects) - `LO`:用于存储非常大的二进制数据(已逐渐被 `BYTEA` 取代) ### 3. 未知类型(Unknown) - `UNKNOWN`:在 SQL 查询中未指定类型的字面量(如 `'abc'`) --- ## 八、用户自定义类型(User-defined types) - 使用 `CREATE TYPE` 定义的类型(包括枚举、复合、范围等) --- ## 九、JSONB 和 JSON 的区别 | 类型 | 存储方式 | 查询性能 | 索引支持 | |------|-----------|------------|------------| | JSON | 文本形式 | 较低 | 不支持 | | JSONB | 二进制形式 | 高 | 支持 | --- ## 十、PostgreSQL 的扩展类型 通过安装扩展(如 `postgis`、`hstore`、`uuid-ossp`)可以添加更多类型: - `GEOMETRY` / `GEOGRAPHY`(地理空间数据) - `HSTORE`:键值对存储 - `UUID`:生成唯一 ID - `JSONB`:高性能 JSON 存储 --- 如果你需要某个具体类型的功能或用法,可以告诉我,我可以进一步详细说明!
上一篇:
列出PostgreSQL的一些优点和缺点。
下一篇:
定义 PostgreSQL 提供的构建新数据库的方法
标题录入,一次不能超过6条
留言
评论