📅  最后修改于: 2023-12-03 14:45:34.335000             🧑  作者: Mango
在 PostgreSQL 中,枚举类型是一种用户定义的数据类型,用于定义具有有限可能取值的列。枚举类型的值由用户在创建该类型时定义,列中的值必须是这些定义的值之一。
要创建一个枚举类型,您需要使用 CREATE TYPE
命令。以下是创建名为 day_of_week
的枚举类型示例,该类型可以具有七个可能的值(星期一至星期日):
CREATE TYPE day_of_week AS ENUM (
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday',
'Sunday'
);
创建枚举类型后,您可以在表定义中使用它作为列的数据类型。以下是一个具有 day_of_week
列的示例表定义:
CREATE TABLE meetings (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
day_of_week day_of_week NOT NULL
);
您可以使用以下语法在表中插入值:
INSERT INTO meetings (name, day_of_week) VALUES ('Project review', 'Wednesday');
您还可以使用枚举类型在 WHERE
子句中进行筛选,例如:
SELECT * FROM meetings WHERE day_of_week = 'Monday';
您可以使用 pg_enum
系统目录表来获取枚举类型的值列表。以下是获取 day_of_week
枚举类型中的值列表的示例查询:
SELECT enumlabel FROM pg_enum WHERE enumtypid = 'day_of_week'::regtype;
该查询将返回以下结果:
enumlabel
------------
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
(7 rows)
要向枚举类型中添加新值,请使用 ALTER TYPE
命令。以下是向 day_of_week
枚举类型中添加名为 Holiday
的新值的示例:
ALTER TYPE day_of_week ADD VALUE 'Holiday';
您还可以使用 DROP VALUE
子句从枚举类型中删除现有值。但是,删除枚举类型的值可能会破坏现有数据,因此请务必谨慎操作。
枚举类型是一种方便且具有语义的 PostgreSQL 数据类型,它使您可以轻松地定义具有预定义可能值的列。通过使用枚举类型,您可以避免在表中使用超出预定义集合的值,并减少数据输入错误的可能性。