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

openGauss每日一练第11天 | 数据库管理基础

原创 pysql 2022-12-07
1206

本章学习OpenGauss的数据库管理

数据库是数据库对象的容器,在数据库中,可以创建模式、表、索引等数据库对象。openGauss数据库管理包括:创建数据库、删除数据库、重新命名数据库、查看数据库的信息。

创建一个新的数据库。缺省情况下,新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。

本章主要学习内容:

1.创建表空间enmtbs和数据库musicdb

2.查看数据库集簇中有哪些数据库

3.查看数据库默认的表空间信息

4.查看数据库下有哪些模式

5.查询当前连接的数据库下有哪些表:

6.更改数据库默认的表空间

7.重新命名数据库

8.修改数据库的默认用户

9.删除数据库


实验:

1.创建表空间enmtbs和数据库musicdb:

CREATE TABLESPACE enmtbs RELATIVE LOCATION 'tablespace/enmtbs1';

CREATE DATABASE musicdb WITH TABLESPACE = enmtbs;


2.查看数据库集簇中有哪些数据库

SELECT datname FROM pg_database;

  1. 查看数据库默认的表空间信息

首先执行下面的语句,查看musicdb数据库默认表空间的对象OID:

select datname,dattablespace from pg_database where datname='musicdb';


根据表空间对象的OID,来查看表空间的名字:

select oid,spcname from pg_tablespace where oid=16389;


–可以将上面的两条语句合并成一条语句,来查询数据库musicdb默认表空间的名字:

select spcname

from pg_tablespace

where oid=( select dattablespace

from pg_database

where datname='musicdb' );


4.查看数据库下有哪些模式

\dn+

--或

SELECT catalog_name, schema_name, schema_owner FROM information_schema.schemata;


5.查询当前连接的数据库omm下有哪些表:

with my_tables(table_catalog, table_schema, table_name, table_type) as

( select table_catalog, table_schema, table_name, table_type

from information_schema.tables

where table_schema not in ('pg_catalog', 'information_schema','dbe_perf')

)

select * from my_tables;


6.更改数据库默认的表空间

CREATE TABLESPACE app_ts RELATIVE LOCATION 'tablespace/app_ts1';

ALTER DATABASE musicdb SET TABLESPACE app_ts;


--查看表空间是否更改完成

select spcname

from pg_tablespace

where oid=( select dattablespace

from pg_database

where datname='musicdb' );


7.修改数据库的默认用户

CREATE USER user21 IDENTIFIED BY 'user1@ustb2020';

ALTER USER user21 SYSADMIN;

ALTER DATABASE musicdb OWNER to user21;


8.重新命名数据库

删除数据库

ALTER DATABASE musicdb RENAME TO musicdb1;

DROP DATABASE musicdb1;



附录:关于pg_database视图;

openGauss=# \d pg_database
Table "pg_catalog.pg_database"
Column | Type | Modifiers
------------------+-----------+-----------
datname | name | not null
datdba | oid | not null
encoding | integer | not null
datcollate | name | not null
datctype | name | not null
datistemplate | boolean | not null
datallowconn | boolean | not null
datconnlimit | integer | not null
datlastsysoid | oid | not null
datfrozenxid | xid32 | not null
dattablespace | oid | not null
datcompatibility | name | not null
datacl | aclitem[] |
datfrozenxid64 | xid |
datminmxid | xid |
Indexes:
"pg_database_datname_index" UNIQUE, btree (datname) TABLESPACE pg_global
"pg_database_oid_index" UNIQUE, btree (oid) TABLESPACE pg_global
Replica Identity: NOTHING
Tablespace: "pg_global"

表 1 PG_DATABASE字段

名称

类型

描述

oid

oid

行标识符(隐含属性,必须明确选择)。

datname

name

数据库名称。

datdba

oid

数据库所有人,通常为其创建者。

encoding

integer

数据库的字符编码方式。

datcollate

name

数据库使用的排序顺序。

datctype

name

数据库使用的字符分类。

datistemplate

boolean

是否允许作为模板数据库。

datallowconn

boolean

如果为假,则没有用户可以连接到这个数据库。这个字段用于保护template0数据库不被更改。

datconnlimit

integer

该数据库上允许的最大并发连接数,-1表示无限制。

datlastsysoid

oid

数据库里最后一个系统OID 。

datfrozenxid

xid32

用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。当前版本该字段已经废弃使用,为保持前向兼容,保留此字段,新增datfrozenxid64用于记录此信息。

dattablespace

oid

数据库的缺省表空间。

datcompatibility

name

数据库兼容模式,当前支持四种兼容模式:A、B、C、PG,分别表示兼容O、MY、TD和POSTGRES。

datacl

aclitem[]

访问权限。

datfrozenxid64

xid

用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。

datminmxid

xid

该数据库中中所有在这个之前的多事务ID已经被一个事务ID替换。这用于跟踪该数据库是否需要为了防止事务ID重叠或者允许收缩pg_clog而进行清理。它是此数据库中所有表的pg_class.relminmxid中的最小值。

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

评论