暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss每日一练第12天 | 定义数据类型

原创 许玉冲 2021-12-21
869

通过本次练习,学习和认识了openGauss定义数据类型的基本操作和管理命令。


功能特点:

在当前数据库中定义一种新的数据类型。定义数据类型的用户将成为该数据类型的拥有者。类型只适用于行存表


支持类型:

复合类型、基本类型、shell类型和枚举类型。

  • 复合类型

    复合类型由一个属性名和数据类型的列表指定。如果属性的数据类型是可排序的,也可以指定该属性的排序规则。复合类型本质上和表的行类型相同,但是如果只想定义一种类型,使用CREATE TYPE避免了创建一个实际的表。单独的复合类型也是很有用的,例如可以作为函数的参数或者返回类型。

    为了能够创建复合类型,必须拥有在其所有属性类型上的USAGE特权。

  • 基本类型

    用户可以自定义一种新的基本类型(标量类型)。通常来说这些函数必须是底层语言所编写。

  • shell类型

    shell类型是一种用于后面要定义的类型的占位符,通过发出一个不带除类型名之外其他参数的CREATE TYPE命令可以创建这种类型。在创建基本类型时,需要shell类型作为一种向前引用。

  • 枚举类型

    由若干个标签构成的列表,每一个标签值都是一个非空字符串,且字符串长度必须不超过63个字节。


测试用例:

–创建一种复合类型
CREATE TYPE compfoo AS (f1 int, f2 text);
CREATE TABLE t1_compfoo(a int, b compfoo);
INSERT INTO t1_compfoo values(1,(1,'demo'));
SELECT (b).f1 FROM t1_compfoo;


–创建一个枚举类型
CREATE TYPE bugstatus AS ENUM ('create', 'modify', 'closed');



修改类型定义:

–重命名数据类型
ALTER TYPE compfoo RENAME TO compfoo1;
–增加一个新的属性
ALTER TYPE compfoo1 ADD ATTRIBUTE f3 int;
 
–删除一个属性
ALTER TYPE compfoo1 drop ATTRIBUTE f1;
 
–为枚举类型添加一个标签值
ALTER TYPE bugstatus ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed';

–重命名一个标签值 ALTER TYPE bugstatus RENAME VALUE 'create' TO 'new';


删除类型:

DROP TYPE compfoo1;


















「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论