简介
本实验指导书主要目的是为了让读者熟悉并掌握 openGauss 数据库的基本操作,并通过案例强化学习。
内容描述
本实验指导书先介绍创建管理用户、表及其它数据库对象等openGauss数据库的基本操作,再从学校数据模型的案例入手,进行模拟演练。
前置条件
openGauss数据库开发需要掌握openGauss数据库的基本操作和SQL语法,openGauss数据库支持SQL2003标准语法,数据库基本操作参见附录一。
实验环境说明
- 组网说明
本实验环境为华为云ECS服务器和openGauss数据库。 - 设备介绍
为了满足本实验需要,建议实验环境采用以下配置:
设备名称、型号与版本的对应关系如下:
设备明细表
设备名称设备型号软件版本数据库openGaussopenGauss 1.1.0操作系统openEuleropenEuler 20.3LTS
实验概览
1 数据库开发实验
1.1 创建和管理用户、表空间和数据库
1.1.1 创建和管理用户
1.1.1.1 创建用户
通过CREATE USER创建的用户,默认具有LOGIN权限;
通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。
系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。
创建用户jim,登录密码为Bigdata@123。
postgres=# CREATE USER jim PASSWORD 'Bigdata@123';
CREATE ROLE
同样的下面语句也可以创建用户。
postgres=# CREATE USER kim IDENTIFIED BY 'Bigdata@123';
CREATE ROLE
如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。
postgres=# CREATE USER dim CREATEDB PASSWORD 'Bigdata@123';
CREATE ROLE
1.1.1.2 管理用户
将用户jim的登录密码由Bigdata@123修改为Abcd@123。
postgres=# ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'Bigdata@123';
ALTER ROLE
为用户jim追加CREATEROLE权限。
postgres=# ALTER USER jim CREATEROLE;
ALTER ROLE
将enable_seqscan的值设置为on,设置成功后,在下一会话中生效。
postgres=# ALTER USER jim SET enable_seqscan TO on;
ALTER ROLE
锁定jim帐户。
postgres=# ALTER USER jim ACCOUNT LOCK;
ALTER ROLE
删除用户。
postgres=# DROP USER kim CASCADE;
DROP ROLE
postgres=# DROP USER jim CASCADE;
DROP ROLE
postgres=# DROP USER dim CASCADE;
DROP ROLE
1.1.2 创建和管理表空间
1.1.2.1 创建表空间
步骤 1 执行如下命令创建用户jack。
postgres=# CREATE USER jack IDENTIFIED BY 'Bigdata@123';
当结果显示为如下信息,则表示创建成功。
CREATE ROLE
步骤 2 执行如下命令创建表空间。
postgres=# CREATE TABLESPACE fastspace RELATIVE LOCATION 'tablespace/tablespace_1';
当结果显示为如下信息,则表示创建成功。
CREATE TABLESPACE
其中“fastspace”为新创建的表空间,“数据库节点数据目录/pg_location/tablespace/tablespace_1”是用户拥有读写权限的空目录,如 /gaussdb/data/db1/pg_location/tablespace/tablespace_1 。
步骤 3 数据库系统管理员执行如下命令将“fastspace”表空间的访问权限赋予数据用户jack。
postgres=# GRANT CREATE ON TABLESPACE fastspace TO jack;
当结果显示为如下信息,则表示赋予成功。
GRANT
1.1.2.2 管理表空间
1.1.2.2.1 查询表空间
方式1:检查pg_tablespace系统表。如下命令可查到系统和用户定义的全部表空间。
postgres=# SELECT spcname FROM pg_tablespace;
spcname
------------
pg_default
pg_global
fastspace
(3 rows)
方式2:使用gsql程序的元命令查询表空间。
postgres=# \db
List of tablespaces
Name | Owner | Location
------------+-------+-------------------------
fastspace | omm | tablespace/tablespace_1
pg_default | omm |
pg_global | omm |
(3 rows)
1.1.2.2.2 查询表空间使用率
步骤 1 查询表空间的当前使用情况。
postgres=# SELECT PG_TABLESPACE_SIZE('fastspace');
返回如下信息:
pg_tablespace_size
--------------------
4096
(1 row)
其中4096表示表空间的大小,单位为字节。
步骤 2 计算表空间使用率。
表空间使用率=PG_TABLESPACE_SIZE/表空间所在目录的磁盘大小。
1.1.2.2.3 修改表空间
执行如下命令对表空间fastspace重命名为fspace。
postgres=# ALTER TABLESPACE fastspace RENAME TO fspace;
ALTER TABLESPACE
执行如下命令删除表空间fspace。
postgres=# DROP TABLESPACE fspace;
DROP TABLESPACE
说明:用户必须是表空间的owner或者系统管理员才能删除表空间。
1.1.3 创建和管理数据库
1.1.3.1 创建数据库
步骤 1 使用如下命令创建一个新的表空间tpcds_local。
postgres=# CREATE TABLESPACE tpcds_local RELATIVE LOCATION 'tablespace/tablespace_2';
CREATE TABLESPACE
步骤 2 使用如下命令创建一个新的数据库db_tpcc。
postgres=# CREATE DATABASE db_tpcc WITH TABLESPACE = tpcds_local;
CREATE DATABASE
1.1.3.2 管理数据库
1.1.3.2.1 查看数据库
使用\l元命令查看数据库系统的数据库列表(l表示list)。
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+-----------+---------+-------+-------------------
db_tpcc | omm | SQL_ASCII | C | C |
postgres | omm | SQL_ASCII | C | C |
template0 | omm | SQL_ASCII | C | C | =c/omm +
| | | | | omm=CTc/omm
template1 | omm | SQL_ASCII | C | C | =c/omm +
| | | | | omm=CTc/omm
(4 rows)
使用如下命令通过系统表pg_database查询数据库列表。
postgres=# SELECT datname FROM pg_database;
datname
-----------
template1
db_tpcc
template0
postgres
(4 rows)
1.1.3.2.2 修改数据库
用户可以使用如下命令修改数据库属性(比如:owner、名称和默认的配置属性)。
使用以下命令为数据库设置默认的模式搜索路径。
postgres=# ALTER DATABASE db_tpcc SET search_path TO pa_catalog,public;
ALTER DATABASE
使用如下命令为数据库重新命名。
postgres=# ALTER DATABASE db_tpcc RENAME TO human_tpcds;
ALTER DATABASE
1.1.3.2.3 删除数据库
用户可以使用DROP DATABASE命令删除数据库。此命令删除了数据库中的系统目录,并且删除了带有数据的磁盘上的数据库目录。用户必须是数据库的owner或者系统管理员才能删除数据库。当有人连接数据库时,删除操作会失败。删除数据库时请先连接到其他的数据库。
使用如下命令删除数据库:
postgres=# DROP DATABASE human_tpcds;
DROP DATABASE