在 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、数组和枚举类型等多种数据类型。
正确选择和使用数据类型是构建高性能和可靠数据库的关键。希望上述信息对你有所帮助!如果你有特定的需求或问题,请随时提问。