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

openGauss每日一练第 12 天 | 自定义数据类型管理及课后作业

原创 JiekeXu 2021-12-14
1124

openGauss 每日一练第 12 天学习打卡,巩固 openGauss 数据库定义类型基本操作!

学习目标

学习 openGauss 定义数据类型

前面每日一练链接:

openGauss每日一练第 1 天 | 数据库和表的基本操作(一)
openGauss每日一练第 2 天 | 数据库和表的基本操作(二)
openGauss每日一练第 3 天 | 前三课作业实操练习
openGauss每日一练第 4 天 | 角色管理及课后作业
openGauss每日一练第 5 天 | 用户管理及课后作业
openGauss每日一练第 6 天 | 模式管理及课后作业
openGauss每日一练第 7 天 | 表空间管理及课后作业
openGauss每日一练第 8 天 | 分区表管理及课后作业
openGauss每日一练第 9 天 | 普通表索引管理及课后作业
openGauss每日一练第 10 天 | 分区表索引管理及课后作业
openGauss每日一练第 11 天 | 视图管理及课后作业

课程学习

openGauss 数据类型官方文档: https://opengauss.org/zh/docs/2.1.0/docs/Developerguide/%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B.html


openGauss 支持的数据类型有很多,一般可以分为如下 19 类,详细信息可查看官方文档,这里不做介绍,本次主要学习 openGauss 自定义数据类型。

  • 数值类型
  • 货币类型
  • 布尔类型
  • 字符类型
  • 二进制类型
  • 日期/时间类型
  • 几何类型
  • 网络地址类型
  • 位串类型
  • 文本搜索类型
  • UUID类型
  • JSON/JSONB类型
  • HLL数据类型
  • 范围类型
  • 对象标识符类型
  • 伪类型
  • 列存表支持的数据类型
  • XML类型
  • 账本数据库使用的数据类型。

连接 openGauss

su - omm
gsql -r

gsql -r -h localhost -U user1 -W JiekeXu12 -d postgres

1.创建类型

–创建一种复合类型

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;
\d compfoo

图片.png

–创建一个枚举类型

CREATE TYPE bugstatus AS ENUM ('create', 'modify', 'closed');

–查看类型

select * from pg_enum;

图片.png

2.修改类型定义

–重命名数据类型

ALTER TYPE compfoo RENAME TO compfoo1;

–增加一个新的属性

ALTER TYPE compfoo1 ADD ATTRIBUTE f3 int;
\d compfoo1
select * from t1_compfoo;

图片.png

–删除一个属性

ALTER TYPE compfoo1 drop ATTRIBUTE f1;
\d compfoo1
select * from t1_compfoo;

图片.png

–为枚举类型添加一个标签值

ALTER TYPE bugstatus ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed';

–重命名一个标签值

ALTER TYPE bugstatus RENAME VALUE 'create' TO 'new';
select * from pg_enum;

图片.png

3.删除类型

DROP TYPE compfoo1;
DROP TYPE compfoo1 cascade;
drop type bugstatus;

图片.png

课程作业

1.创建一个复合类型,重命名复合类型,为复合类型增加属性、删除属性

create type twotp as (t1 char(20),t2 money);
\d twotp 
alter type twotp rename to footype;
\d footype
alter type footype add attribute t3 int;
\d footype
alter type footype drop attribute t1;
\d footype

图片.png

jiekexu=# create type twotp as (t1 char(20),t2 money);
CREATE TYPE
jiekexu=# \d twotp
   Composite type "public.twotp"
 Column |     Type      | Modifiers 
--------+---------------+-----------
 t1     | character(20) | 
 t2     | money         | 

jiekexu=# alter type twotp rename to footype;
ALTER TYPE
jiekexu=# \d footype
  Composite type "public.footype"
 Column |     Type      | Modifiers 
--------+---------------+-----------
 t1     | character(20) | 
 t2     | money         | 

jiekexu=# alter type footype add attribute t3 int;
ALTER TYPE
jiekexu=# \d footype
  Composite type "public.footype"
 Column |     Type      | Modifiers 
--------+---------------+-----------
 t1     | character(20) | 
 t2     | money         | 
 t3     | integer       | 

jiekexu=# alter type footype drop attribute t1;
ALTER TYPE
jiekexu=# \d footype
Composite type "public.footype"
 Column |  Type   | Modifiers 
--------+---------+-----------
 t2     | money   | 
 t3     | integer | 

2.创建一个枚举类型,新增标签值,重命名标签值

CREATE TYPE dml_type AS ENUM ('insert', 'update', 'delete');
select * from pg_enum;

ALTER TYPE DML_type ADD VALUE IF NOT EXISTS 'truncate' BEFORE 'delete';

ALTER TYPE DML_type RENAME VALUE 'insert' TO 'CTAS';
select * from pg_enum;

图片.png

3.使用新创建的类型创建表

CREATE TABLE t1_type(a int, b footype);
INSERT INTO t1_type values(1,(150.36,100));
SELECT * FROM t1_type ;
\d t1_type 

jiekexu=# CREATE TABLE t1_type(a int, b footype);
CREATE TABLE
jiekexu=# INSERT INTO t1_type values(1,(150.36,100));
INSERT 0 1
jiekexu=# SELECT (b).t2 FROM t1_type ;
   t2    
---------
 $150.36
jiekexu=# select * from t1_type;
 a |       b       
---+---------------
 1 | ($150.36,100)
(1 row)

图片.png

4.删除类型

drop type footype cascade;
drop type dml_type;

图片.png

欧耶,第十二课自建数据类型管理实操及课后作业练习题完成啦,有点吃力,以前还没真这么玩过,已有的数据类型都没有摸透!

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

评论