openGauss开源数据库实战八

openGauss数据库约束测试任务

任务八 测试 openGauss DBMS 的数据库约束

任务目标

机构组织的业务规则,有相当一部分通过数据库约束来实现。通过本任务,读者可以掌握
openGaussDBMS的主键(PRIMARY KEY)约束、UNIQUE约束、NOT NULL约束、外键(FOR- EIGNKEY)约束、CHECK约束,并能为某个属性设置默认值(DEFAULT)。

实施步骤

一、录到数据库studentdb

用Linux用户omm,打开一个Linux终端窗口,执行如下的命令,使用数据库用户student登录到数据库studentdb:

gsql-d studentdb-h 192.168.100.91-U student-p26000-W student@ustb2020-r

二、测试CHECK约束

1.列级CHECK约束

在创建表的时候,创建列级CHECK约束:

DROP TABLE IF EXISTS test;
--  创建表,age列的值表示活着的人的年龄,是0<=age<200的整数
--  在列级创建该CHECK约束
CREATE TABLE test(age INT CHECK(age>=0 AND age<200),
                  sex INT);
INSERT INTO test VALUES(-20,1);  -- 插入值不满足CHECK约束,插入报错!
INSERT INTO test VALUES(20,1);   -- 插入值满足CHECK约束
INSERT INTO test VALUES(201,1);  -- 插入值不满足CHECK约束,插入报错!
2.表级CHECK约束

在创建表的时候,创建表级CHECK约束:

DROP TABLE IF EXISTS test;
--  创建表,age列的值表示活着的人的年龄,是0<=age<200的整数
--  在表级创建该CHECK约束
CREATE TABLE test( age INT,
                   sex INT,
                   CHECK(age>=0 AND age<200)
                  );
INSERT INTO test VALUES(-20,1);  -- 插入值不满足CHECK约束,插入报错!
INSERT INTO test VALUES(20,1);   -- 插入值满足CHECK约束
INSERT INTO test VALUES(201,1);  -- 插入值不满足CHECK约束,插入报错!

在这里插入图片描述

三、测试NOTNULL约束

在创建表的时候,创建列级NOTNULL约束:

DROP TABLE IF EXISTS test;
CREATE TABLE test( sno int NOT NULL,  --  在列级创建NOT NULL约束
                   age int CHECK(age>0 and age<200</
### OpenGauss 数据库空间管理使用指南 #### 什么是空间? 在数据库管理系统中,空间是一种逻辑存储结构,用于管理和分配物理磁盘上的数据文件。通过定义不同的空间,可以实现更灵活的数据存储策略,例如将频繁访问的数据存放在高性能磁盘上,而较少使用的数据则放置于较低性能的存储设备上。 对于 openGauss 而言,其支持创建和管理空间的功能,允许用户自定义存储位置以及优化资源利用效率[^1]。 --- #### 创建空间 要创建一个新的空间,在 openGauss 中可以通过 `CREATE TABLESPACE` 命令完成。以下是该命令的基本语法: ```sql CREATE TABLESPACE tablespace_name LOCATION 'directory_path'; ``` - **tablespace_name**: 定义新空间的名字。 - **LOCATION**: 指定空间对应的目录路径,此路径需事先存在于服务器端并具有适当权限。 例如,假设有一个名为 `/data/tables` 的目录可用作新的空间,则执行如下 SQL 语句即可建立相应的空间: ```sql CREATE TABLESPACE my_tablespace LOCATION '/data/tables'; ``` 注意:指定的位置应当由操作系统管理员预先配置好,并赋予 PostgreSQL 用户足够的读写权限[^2]。 --- #### 修改空间 如果需要更改现有空间的状态或者重新设置某些参数,可采用 `ALTER TABLESPACE` 命令来进行调整。比如改变某个特定空间的所有者身份或是将其设为只读模式等操作均能借助这一指令达成目的。 示例——变更空间所有权给另一名用户: ```sql ALTER TABLESPACE my_tablespace OWNER TO new_owner; ``` 另外还可以把整个空间标记成不可用状态(即进入“冻结”阶段),直到再次激活为止;这通常是在维护期间采取的安全措施之一。 --- #### 删除空间 当不再需要某张所占用的空间时,应该考虑彻底移除它以释放硬盘容量。此时需要用到的是 `DROP TABLESPACE` 命令,不过在此之前必须确认没有任何对象仍然依赖于此空间之上,否则将会引发错误提示无法继续下去。 删除样例代码展示如下所示: ```sql DROP TABLESPACE IF EXISTS old_unused_space CASCADE; ``` 这里加上了选项 `IF EXISTS` 来防止因误删不存在的目标而导致程序崩溃中断运行流程;同时附加关键字 `CASCADE` 可自动清理掉隶属于目标下的所有关联实体项目。 --- #### 备份与恢复涉及全局对象含空间的信息 为了保障系统的稳定性和可靠性,在日常运维工作中定期做好备份工作至关重要。针对 openGauss 平台来说,可以运用专门设计好的实用工具如 gs_dumpall 实现全面覆盖到各个层面细节程度较高的迁移过程之中去,其中包括但不限于有关联关系紧密相连在一起的各种角色账户资料、定制化设定规则集锦等等重要内容项都囊括进来一起打包处理完毕之后再转移到其他地方保存起来待日后必要时刻取回应用上去。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值