用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库,赋予创建数据库的权限参见管理用户及权限。
初始时,openGauss包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。postgres默认的兼容数据库类型为O(即DBCOMPATIBILITY = A ),该兼容类型下将空字符串作为NULL处理。
CREATE DATABASE实际上通过拷贝模板数据库来创建新数据库。默认情况下,拷贝template0。请避免使用客户端或其他手段连接及操作两个模板数据库。
说明:
- 模板数据库中没有用户表,可通过系统表PG_DATABASE查看模板数据库属性。
- 模板template0不允许用户连接;模板template1只允许数据库初始用户和系统管理员连接,普通用户无法连接。
数据库系统中会有多个数据库,但是客户端程序一次只能连接一个数据库。也不能在不同的数据库之间相互查询。一个openGauss中存在多个数据库时,需要通过-d参数指定相应的数据库实例进行连接。
如果数据库的编码为SQL_ASCII(可以通过“show server_encoding;”命令查看当前数据库存储编码),则在创建数据库对象时,如果对象名中含有多字节字符(例如中文),超过数据库对象名长度限制(63字节)的时候,数据库将会将最后一个字节(而不是字符)截断,可能造成出现半个字符的情况。
针对这种情况,请遵循以下条件:
a. 使用如下命令创建一个新的表空间superman_local。
openGauss=# CREATE TABLESPACE superman_local RELATIVE LOCATION 'tablespace/tablespace_1' ;
CREATE TABLESPACE
b. 使用如下命令创建一个新的数据库superman_tpcc。
openGauss=# CREATE DATABASE superman_tpcc WITH TABLESPACE = superman_local;
CREATE DATABASE
说明:
- 数据库名称遵循SQL标识符的一般规则。当前角色自动成为此新数据库的所有者。
- 如果一个数据库系统用于承载相互独立的用户和项目,建议把它们放在不同的数据库里。
- 如果项目或者用户是相互关联的,并且可以相互使用对方的资源,则应该把它们放在同一个数据库里,但可以规划在不同的模式中。模式只是一个纯粹的逻辑结构,某个模式的访问权限由权限系统模块控制。
- 创建数据库时,若数据库名称长度超过63字节,server端会对数据库名称进行截断,保留前63个字节,因此建议数据库名称长度不要超过63个字节。
使用\l元命令查看数据库系统的数据库列表。
openGauss=# \l
使用如下命令通过系统表pg_database查询数据库列表。
openGauss=# SELECT datname FROM pg_database;
用户可以使用如下命令修改数据库属性(比如:owner、名称和默认的配置属性)。
使用以下命令为数据库设置默认的模式搜索路径。
openGauss=# ALTER DATABASE superman_tpcc SET search_path TO pa_catalog,public;
ALTER DATABASE
使用如下命令修改数据库表空间。
openGauss=# ALTER DATABASE superman_tpcc SET TABLESPACE superman;
ALTER DATABASE
使用如下命令为数据库重新命名。
openGauss=# ALTER DATABASE superman_tpcc RENAME TO human_superman;
ALTER DATABASE
用户可以使用DROP DATABASE命令删除数据库。这个命令删除了数据库中的系统目录,并且删除了磁盘上带有数据的数据库目录。用户必须是数据库的owner或者系统管理员才能删除数据库。当有人连接数据库时,删除操作会失败。删除数据库时请先连接到其他的数据库。
使用如下命令删除数据库:
openGauss=# DROP DATABASE human_superman;
DROP DATABASE
点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!