创建数据库
openGauss 包含两个模板数据库 template0、template1,以及一个默认的用户数据库 postgres。
缺省情况下新数据库将通过复制标准系统数据库 template0 来创建,且仅支持使用template0来创建。
注意事项
····只有拥有 CREATEDB 权限的用户才可以创建新数据库,系统管理员默认拥有此权限。
····不能在事务块中执行创建数据库语句。
····在创建数据库过程中,出现类似“Permission denied”的错误提示,可能是由于文件系统上数据目录的权限不足。
·····在创建数据库过程中,出现类似“No space left on device”的错误提示,可能是由于磁盘满引起的。
创建数据库的语法格式
CREATE DATABASE database_name [ [ WITH ] { [ OWNER [=] user_name ] | [ TEMPLATE [=] template ] | [ ENCODING [=] encoding ] | [ LC_COLLATE [=] lc_collate ] | [ LC_CTYPE [=] lc_ctype ] | [ DBCOMPATIBILITY [=] compatibilty_type ] | [ TABLESPACE [=] tablespace_name ] | [ CONNECTION LIMIT [=] connlimit ]}[...] ];
复制
参数说明:
database_name:数据库名称。
OWNER [ = ] user_name:数据库所有者。缺省时,新数据库的所有者是当前用户。
TEMPLATE [ = ] template:模板名,即从哪个模板创建新数据库。openGauss采用从模板数据库复制的方式来创建新的数据库。取值范围:仅template0。
ENCODING [ = ] encoding:指定数据库使用的字符编码,可以是字符串(如’SQL_ASCII’)、整数编号。不指定时,默认使用模版数据库的编码。
LC_COLLATE [ = ] lc_collate:指定新数据库使用的字符集。例如,通过lc_collate = 'zh_CN.gbk’设定该参数。
LC_CTYPE [ = ] lc_ctype:指定新数据库使用的字符分类。例如,通过lc_ctype = 'zh_CN.gbk’设定该参数。
DBCOMPATIBILITY [ = ] compatibility_type:指定兼容的数据库的类型,默认兼容O。
TABLESPACE [ = ] tablespace_name:指定数据库对应的表空间。
CONNECTION LIMIT [ = ] connlimit:数据库可以接受的并发连接数。
创建数据库 lvzz
CREATE DATABASE lvzz;
复制
更改数据库属性
可以使用 ALTER DATABASE 语句修改数据库的属性,包括它的名称、所有者、连接数限制、对象隔离属性等。
修改数据库的最大连接数
ALTER DATABASE database_name [ [ WITH ] CONNECTION LIMIT connlimit ]; ALTER DATABASE lvzz connection limit 100;
复制
修改数据库名称
ALTER DATABASE database_name RENAME TO new_name; ALTER DATABASE lvzz rename to lvzz2;
复制
修改数据库所属者
ALTER DATABASE database_name OWNER TO new_owner; ALTER DATABASE lvzz OWNER TO postgres;
复制
修改数据库默认表空间
ALTER DATABASE database_name SET TABLESPACE new_tablespace; ALTER DATABASE lvzz SET TABLESPACE pg_global;
复制
数据库系统中可能会有多个数据库,但是客户端程序一次只能连接一个数据库。也不能在不同的数据库之间相互查询。
一个openGauss中存在多个数据库时,需要通过 -d 参数指定相应的数据库实例进行连接。
gsql -d lvzz
复制
课后作业
1、分别创建名为tpcc1和tpcc2的数据库
\l create database tpcc1; create database tpcc2; \l
复制
2、将tpcc1数据库重命名为tpcc10
alter database tpcc1 rename to tpcc10;
复制
3、分别使用\l和\l+两个元命令查看数据库信息
\l \l+
复制
4、在数据库tpcc2中创建customer表,字段自定义
\c tpcc2; create table lvzz(name varchar(20), age integer); \d
复制
5、删除新创建的数据库
drop database tpcc1; drop database tpcc2;
复制
6、退出gsql程序
\q
复制