postgresql 类型
时间: 2025-03-06 16:50:47 浏览: 23
PostgreSQL 数据类型概述
PostgreSQL 提供了丰富的内置数据类型来满足不同的需求。以下是常用的数据类型的分类及其说明:
数值类型
数值类型用于表示不同范围和精度的数字。
整数类型
smallint
:2字节,有符号整数,取值范围为 (-32768) 到 (32767)[^1]。integer (int)
或者int4
:4字节,有符号整数,取值范围为 (-2147483648) 到 (2147483647)[^1]。bigint
或者int8
:8字节,有符号整数,取值范围为 (-9223372036854775808) 到 (9223372036854775807)。
任意精度数字
numeric(precision, scale)
和decimal(precision, scale)
:可以精确存储指定长度的小数,其中 precision 表示总位数,scale 表示小数部分的位数[^2]。
-- 创建表并定义 numeric 类型字段
CREATE TABLE financial_data (
id SERIAL PRIMARY KEY,
amount NUMERIC(10, 2)
);
字符串类型
字符串类型用来保存字符序列。
char(n)
或character(n)
:固定长度字符串,最大长度由 n 定义;即使实际输入少于 n 长度也会被填充到 n 个字符宽度,在 PostgreSQL 中不推荐使用因为占用更多空间[^3]。varchar(n)
或character varying(n)
:可变长度字符串,最多可达 n 个字符,通常优于 char(n),因为它更节省存储资源。text
:无限制长度的文本数据,适合大段文字内容。
-- 使用 varchar 存储姓名信息
CREATE TABLE person_info (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
bio TEXT -- 可以存入较长描述性的资料
);
时间日期类型
时间日期类型支持多种格式的时间戳记录。
date
:仅包含年月日的信息。time [without time zone]
:一天内具体时刻,默认不含时区信息。timestamp [without time zone]
:完整的日期加时间组合,同样默认忽略时区差异。timestamptz
(timestamp with time zone
) :带有时区偏移量的时间戳,能自动转换成 UTC 或其他目标时区显示。
-- 插入带有当前时间和时区标记的日志条目
INSERT INTO log_entries (log_time) VALUES (NOW() AT TIME ZONE 'UTC');
布尔类型
布尔类型只有两个可能的状态——真(true
)或假(false
)。
-- 添加一个状态标志列
ALTER TABLE task_list ADD COLUMN is_completed BOOLEAN DEFAULT FALSE;
修改现有表格中的列类型
如果需要更改已有表结构中某列的数据类型,则可以通过如下命令完成操作:
ALTER TABLE table_name ALTER COLUMN column_name TYPE new_datatype USING column_name::new_datatype;
例如要将名为 users 的表里的 age 列改为 bigint 类型:
ALTER TABLE users ALTER COLUMN age TYPE bigint USING age::bigint;
相关推荐


















