openGauss 枚举类型ENUM的使用

本文介绍了数据库中的枚举(ENUM)类型,包括如何创建和使用ENUM列,枚举值的索引,以及NULL枚举值的处理。通过示例展示了如何在CREATE TABLE语句中直接定义ENUM类型以及如何插入和查询数据。同时,文章强调了ENUM类型的限制,如长度限制和在分区表中的使用规定。
摘要由CSDN通过智能技术生成

Enum类型

枚举(ENUM)类型是包含一组静态、有序值的数据类型。它们等效于许多编程语言中支持的枚举类型。枚举类型的一个示例可能是星期几,或者是一组数据的状态值。ENUM类型能够提供可读的查询和输出。

创建和使用ENUM列 

枚举值必须是带引号的字符串文字。使用enum类型主要有两种方式:

  1. 通过 CREATE TYPE命令创建ENUM类型,然后指定列为该类型:
    CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
    CREATE TABLE person (
        name text,
        current_mood mood
    );
    INSERT INTO person VALUES ('Moe', 'happy');
    SELECT * FROM person WHERE current_mood = 'happy';
     name | current_mood 
    ------+--------------
     Moe  | happy
    (1 row)
  2. 直接在定义table的时候定义列为enum类型:
    
    
    CREATE TABLE person (
        name text,
        current_mood ENUM ('sad', 'ok', 'happy')
    );
    INSERT INTO person VALUES ('Moe', 'happy');
    SELECT * FROM person WHERE current_mood = 'happy';
     name | current_mood
    ------+--------------
     Moe  | happy
    (1 row)

枚举文字的索引值

每个枚举值都有一个索引:

  • 列规范中列出的元素分配有索引号,从 1 开始。

  • “索引”指的是枚举值列表中的一个位置。例如,指定为的列ENUM ('sad', 'ok', 'happy')将每个值产生以下索引。

枚举值索引

''sad'

1
'ok'2
'happy''

3

在插入表格的时候,可以使用数字来代替对应的枚举值:

openGauss=# INSERT INTO person VALUES('Moe', 1);
INSERT 0 1
openGauss=# SELECT * FROM person;
 name | current_mood 
------+--------------
 Moe  | sad
(1 rows)

在使用数字时,必须是非负整数,不能是浮点数,并且数字的范围不能超过枚举类型中枚举值的个数。

NULL 枚举值

枚举值也可以是空字符串 ('') 或NULL在某些情况下:

NULL枚举值可以用三种表达方式:0,''(空字符串)和NULL.

如果将无效值插入到 ENUM(即允许值列表中不存在的字符串)中,将会报错。

使用约束

  1. 枚举值字符串长度最大为63个字符,超过该限制会报错。
  2. ENUM类型虽然可以在分区表中声明,但是不能用于分区表中作为分区依据。
  3. 支持行存表中定义enum类型,但是不支持列存标中进行定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值