
在OpenGauss中,数据库本身也是数据库对象。不同的数据库在逻辑上彼此分离,除数据库之外的其他数据库对象(例如:表、索引等等)都属于它们各自的数据库。通过下面的语句可以查看OpenGauss数据库服务器中已存在的数据库。
| 视频讲解如下 |
|---|
| 【赵渝强老师】openGauss的数据库 |
(1)登录OpenGauss。
powershell
bin/gsql -d postgres
(2)查看OpenGauss中已有的数据库。
powershell
openGauss=# \l
# 输出的信息如下:
List of databases
Name | Owner | Encoding |......
-----------+----------+----------+------
finance | postgres | UTF8 |......
postgres | postgres | UTF8 |......
school | postgres | UTF8 |......
scott | postgres | UTF8 |......
template0 | postgres | UTF8 |......
template1 | postgres | UTF8 |......
| | |......
(6 rows)
其中:
-
创建数据库时实际上通过拷贝一个已有数据库进行工作的。在默认情况下,将拷贝名为template1的标准系统数据库。所以该数据库是创建新数据库的"模板"。如果为template1数据库增加对象,这些对象将被拷贝到后续创建的用户数据库中。这种行为允许对数据库中标准对象集合的进行修改。例如,如果把过程语言PL/Perl安装到template1中,那么在创建用户数据库后不需要额外的操作就可以使用该语言。
-
系统里还有名为template0的第二个标准系统数据库。这个数据库包含和template1初始内容一样的数据,但只包含openGauss版本预定义的标准对象。在数据库集群被初始化之后,不应该对template0做任何修改。在创建数据库时通过指示使用template0取代template1进行拷贝,可以创建一个"纯净的"用户数据库,它不会包含任何template1中的站点本地附加物。

创建openGauss数据库主要通过SQL命令"create database"完成,下面是具体的操作步骤。
(1)查询现有数据库的集合,可以检查系统目录pg_database。
powershell
openGauss=# select datname from pg_database;
# 输出的信息如下:
datname
-----------
template1
school
finance
template0
scott
postgres
(6 rows)
(2)使用SQL命令"create databas"创建数据库。
powershell
openGauss=# create database mydemodb;
这里需要注意以下几点:
-
第一个数据库总是由initdb命令在初始化数据存储区域时创建的,这个数据库被称为postgres。因此要创建第一个"普通"数据库时,需要连接到openGauss数据库服务器上。
-
在数据库集群初始化期间也会创建第二个数据库template1,。当在集群中创建一个新数据库时,实际上就是克隆了template1。这就意味着对template1所做的任何修改都会体现在所有后续创建的数据库中。因此应避免在template1中创建对象,除非想把它们传播到每一个新创建的数据库中。
-
创建一个新的数据库,实际上是在$PDATA/base目录下创建了一个目录,如下图所示。

(3)重新查询现有数据库的集合。
powershell
openGauss=# select oid,datname from pg_database;
# 输出的信息如下:
oid | datname
-------+-----------
1 | template1
16384 | school
16420 | finance
14809 | template0
16470 | scott
16525 | mydemodb
14814 | postgres
(7 rows)
