
在 PostgreSQL 中,数据类型的选择对于确保数据的正确存储和高效查询至关重要。PostgreSQL 支持广泛的数据类型,包括基本类型、复合类型、枚举类型、数组类型等。以下是 PostgreSQL 中一些常用的数据类型及其用途的详细说明:
smallint(2字节)integer(4字节)bigint(8字节)real(4字节)double precision(8字节)numeric(precision, scale)(可变长度)decimal(precision, scale)(可变长度)money(8字节)char(n)(n字节)varchar(n)(可变长度)text(可变长度)timestamp without time zone(8字节)timestamp with time zone(8字节)date(4字节)time without time zone(8字节)time with time zone(8字节)interval(16字节)boolean(1字节)uuid(16字节)inet(IPv4/IPv6 地址)cidr(IPv4/IPv6 地址加子网掩码)macaddr(MAC 地址)point(2维点)line(线段)lseg(线段)box(矩形)path(路径)polygon(多边形)circle(圆)bytea(二进制数据)xml(XML 文档)json(JSON 文档)jsonb(二进制化的 JSON 文档)复合类型是由其他类型组合而成的类型。例如:
record(由字段组成的记录)枚举类型是一个包含一组命名值的类型。例如:
CREATE TYPE status AS ENUM ('active', 'inactive', 'suspended');
数组类型可以是一维或多维数组。例如:
CREATE TABLE students (
id integer PRIMARY KEY,
name text[],
grades real[]
);
除了标准类型外,PostgreSQL 还允许用户定义自己的数据类型。例如:
CREATE TYPE custom_type AS (field1 int, field2 text);
选择合适的数据类型时应考虑以下几个方面:
以下是一个包含多种数据类型的表的创建示例:
CREATE TABLE users (
id serial PRIMARY KEY,
first_name varchar(50) NOT NULL,
last_name varchar(50) NOT NULL,
email varchar(100) UNIQUE NOT NULL,
birth_date date,
created_at timestamp with time zone DEFAULT now(),
active boolean DEFAULT true,
address jsonb,
roles text[] DEFAULT ARRAY['user'],
status status -- 假设 status 是一个枚举类型
);
在这个示例中,表 users 包含了整数、字符串、日期时间、布尔值、JSONB、数组和枚举类型等多种数据类型。
正确选择和使用数据类型是构建高性能和可靠数据库的关键。希望上述信息对你有所帮助!如果你有特定的需求或问题,请随时提问。