更新日期:2024年09月11日
前提条件
用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库,
赋予
创建数据库的权限参见7.2 管理用户及权限。
背景信息
GBase 8c 数据库默认包含两个初始模板数据库template0、template1,以及一个默认的
用户数据库postgres。
postgres 默认的兼容数据库类型为O
(即DBCOMPATIBILITY = A )
,
该兼容类型下将空字符串作为NULL 处理。
CREATE DATABASE 实际上通过拷贝模板数据库来创建新数据库。默认情况下,拷贝
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
16
template0。请避免使用客户端或其他手段连接及操作两个模板数据库。
模板数据库中没有用户表,可通过系统表PG_DATABASE 查看模板数据库属性。
模板template0 不允许用户连接;
模板template1 只允许数据库初始用户和系统管理
员连接,普通用户无法连接。
允许创建的数据库总数目上限为128 个。
数据库系统中会有多个数据库,
但是客户端程序一次只能连接一个数据库。
也不能在不
同的数据库之间相互查询。当存在多个数据库时,需要通过-d 参数指定相应的数据库
实例进行连接。
注意事项
如果数据库的编码为SQL_ASCII(可以通过“show server_encoding;”命令查看当前数据
库存储编码),则在创建数据库对象时,如果对象名中含有多字节字符(例如中文),超过
数据库对象名长度限制(63 字节)的时候,数据库将会将最后一个字节(而不是字符)截
断,可能造成出现半个字符的情况。
针对这种情况,请遵循以下条件:
保证数据对象的名称不超过限定长度。
修改数据库的默认存储编码集(server_encoding)为utf-8 编码集。
不要使用多字节字符做为对象名。
创建的数据库总数目建议不超过128 个。
如果出现因为误操作导致在多字节字符的中间截断而无法删除数据库对象的现象,请
使用截断前的数据库对象名进行删除操作,
或将该对象从各个数据库节点的相应系统表
中依次删掉。
操作步骤
步骤1 使用如下命令创建一个新的数据库db_tpcc。
postgres=# CREATE DATABASE db_tpcc;
CREATE DATABASE
数据库名称遵循SQL 标识符的一般规则。
当前角色自动成为此新数据库的所有者。
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
17
如果一个数据库系统用于承载相互独立的用户和项目,
建议把它们放在不同的数据
库里。
如果项目或者用户是相互关联的,
并且可以相互使用对方的资源,
则应该把它们放
在同一个数据库里,但可以规划在不同的模式中。模式只是一个纯粹的逻辑结构,
某个模式的访问权限由权限系统模块控制。
创建数据库时,若数据库名称长度超过63 字节,server 端会对数据库名称进行截
断,保留前63 个字节,因此建议数据库名称长度不要超过63 个字节。
步骤2 查看数据库
使用\l 元命令查看数据库系统的数据库列表。
postgres=# \l
使用如下命令通过系统表pg_database 查询数据库列表。
postgres=# SELECT datname FROM pg_database;
步骤3 修改数据库
用户可以使用如下命令修改数据库属性(比如: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
步骤4 删除数据库
用户可以使用DROP
DATABASE 命令删除数据库。这个命令删除了数据库中的系统
目录,
并且删除了磁盘上带有数据的数据库目录。
用户必须是数据库的owner 或者系统管理
员才能删除数据库。当有人连接数据库时,删除操作会失败。删除数据库时请先连接到其他
的数据库。
使用如下命令删除数据库:
postgres=# DROP DATABASE human_tpcds;
DROP DATABASE
----结束
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
18