深入浅出PostgreSQL
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.4 数据库的创建、修改和删除

一个数据库是一个或多个模式的集合,而模式包含表、函数等。因此,完整的逻辑组织结构层次是服务器实例(PostgreSQL Server)、数据库(Database)、模式(Schema)、表(Table),以及某些其他对象(如函数)。一个PostgreSQL服务器实例可以管理多个数据库。当应用程序连接到一个数据库时,一般只能访问该数据库中的数据。

3.4.1 实例4:创建数据库

创建数据库的语法格式如下:

参数说明如下所述。

● name:要创建的数据库的名称。

● user_name:要创建的数据库所属的用户。如果没有指定,则默认属于执行该命令的用户。

● template:要创建的数据库所用的模板库,默认的模板库是template1。

● encoding:要创建的数据库所使用的字符集。如果没有指定,则默认使用其模板库的字符集。

● lc_collate:要创建的数据库所使用的collation顺序。这会影响在ORDER BY语法中字符串类型列的顺序,也会影响text类型列的索引顺序。如果没有指定,则默认使用其模板库的collation顺序。

● lc_ctype:要创建的数据库所使用的字符分类。这会影响字符的分类,如大小写和数字。如果没有指定,则默认使用其模板库的字符分类。

● tablespace_name:要创建的数据库所关联的表空间。默认使用模板库对应的表空间。

● allowconn:是否可以连接该数据库,默认设置为true。如果设置为false,则任何用户都不能连接该数据库。

● connlimit:允许并发连接该数据库的个数。默认设置为-1,即没有限制。

● istemplate:是否是模板库,默认设置为false。如果设置为true,则任何具有创建数据库权限的用户均可以用其复制新的数据库;如果设置为false,则只有超级用户和该数据库的用户可以用其复制新的数据库。

提示:

为了方便用户使用,PostgreSQL将CREATE DATABASE封装成一个程序,命名为createdb。

【举例】创建数据库,命名为db_test,代码如下:

【举例】创建数据库,命名为db_test01,所属用户为hr01,关联的表空间为tbs_test01。其中,用户hr01和表空间tbs_test01都是事先创建好的,代码如下:

3.4.2 实例5:修改数据库

修改数据库的语法格式如下:

option包含的选项如下所述。

● ALLOW_CONNECTIONS allowconn

● CONNECTION LIMIT connlimit

● IS_TEMPLATE istemplate

● ALTER DATABASE name RENAME TO new_name

● ALTER DATABASE name OWNER TO{new_owner|CURRENT_USER|SESSION_USER}

● ALTER DATABASE name SET TABLESPACE new_tablespace

● ALTER DATABASE name SET configuration_parameter{TO|=}{value|DEFAULT}

● ALTER DATABASE name SET configuration_parameter FROM CURRENT

● ALTER DATABASE name RESET configuration_parameter

● ALTER DATABASE name RESET ALL

上述语法中的参数可参考3.4.1节中CREATE DATABASE语法的参数说明。这里重点说一下configuration_parameter参数。configuration_parameter用于设置连接到该数据库的所有session的参数配置值。

【举例】将数据库db_test的名称改为“db_test03”,代码如下:

【举例】将数据库db_test01中的最大连接数改为“100”,代码如下:

【举例】将数据库db_test01的索引扫描关闭,当用户连接到该数据库时就将enable_indexscan设置为off,代码如下:

3.4.3 实例6:删除数据库

删除数据库的语法格式如下:

其中,加上“IF EXISTS”可选关键字,则在删除数据库时,如果该数据库不存在,不会报错,只会打印NOTICE信息。

【举例】删除一个已经存在的数据库db_test01,代码如下: