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

–创建一个枚举类型
CREATE TYPE bugstatus AS ENUM ('create', 'modify', 'closed');
–查看类型
select * from pg_enum;

2.修改类型定义
–重命名数据类型
ALTER TYPE compfoo RENAME TO compfoo1;
–增加一个新的属性
ALTER TYPE compfoo1 ADD ATTRIBUTE f3 int;
\d compfoo1
select * from t1_compfoo;

–删除一个属性
ALTER TYPE compfoo1 drop ATTRIBUTE f1;
\d compfoo1
select * from t1_compfoo;

–为枚举类型添加一个标签值
ALTER TYPE bugstatus ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed';
–重命名一个标签值
ALTER TYPE bugstatus RENAME VALUE 'create' TO 'new';
select * from pg_enum;

3.删除类型
DROP TYPE compfoo1;
DROP TYPE compfoo1 cascade;
drop type bugstatus;

课程作业
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

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;

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)

4.删除类型
drop type footype cascade;
drop type dml_type;

欧耶,第十二课自建数据类型管理实操及课后作业练习题完成啦,有点吃力,以前还没真这么玩过,已有的数据类型都没有摸透!
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




