📜  PostgreSQL – 更改数据库

📅  最后修改于: 2022-05-13 01:57:15.724000             🧑  作者: Mango

PostgreSQL – 更改数据库

PostgreSQL 有一个 ALTER DATABASE 语句,用于修改现有数据库。数据库的功能一旦创建就可以使用 ALTER DATABASE 语句进行更改。

Syntax: ALTER DATABASE target_database action;

正如上面的语法所描述的,在 ALTER DATABASE 语句之后提到要进行修改的数据库,然后是要对数据库执行的操作。

以下是 PostgreSQL 允许的操作列表:

重命名数据库:

ALTER DATABASE RENAME TO 语句用于重命名数据库,如下所示:

ALTER DATABASE target_database RENAME TO new_database;

更改数据库所有者:

ALTER DATABASE OWNER TO 语句用于更改数据库的所有者,如下所示:



ALTER DATABASE target_database OWNER TO new_owner;

需要注意的是,只有超级用户或数据库所有者才能执行此操作。

更改数据库的表空间:

ALTER DATABASE SET TABLESPACE 语句用于更改数据库的默认表空间,如下所示:

ALTER DATABASE target_database SET TABLESPACE new_tablespace;

该语句将表和索引从旧表空间移动到新表空间。

更改运行时配置变量的会话默认值:

默认情况下,PostgreSQL 从postgresql.conf文件加载配置变量。此文件包含有关数据库角色及其各自的身份验证散列类型的信息。可以使用 ALTER DATABASE SET 语句编辑这些设置或信息,如下所示:

ALTER DATABASE target_database SET config_data = value;

请务必注意,只有超级用户或数据库所有者才能更改数据库的默认会话变量。
现在,让我们看一下 ALTER DATABASE 语句的实现示例。

例子:
让我们以 Postgres 用户身份登录并使用以下命令创建一个示例数据库(例如 my_test_db ):

CREATE DATABASE my_test_db; 

现在使用以下命令将数据库从“ my_test_db ”重命名为“ my_renamed_db ”:



ALTER DATABASE my_test_db RENAME TO my_renamed_db;

现在执行以下语句将“ my_renamed_db ”数据库的所有者从“postgres”更改为“geeks”,假设“geeks”角色已经存在。

ALTER DATABASE my_renamed_db OWNER TO geeks;

如果“geeks”角色不存在,请使用以下语句创建它:

CREATE ROLE geeks
 VALID UNTIL 'infinity';

现在从pg_default改变my_renamed_db的默认表空间geeks_default,与该geeks_defaulttablespace已经存在的假设。

ALTER DATABASE my_renamed_db
SET TABLESPACE geeks_default;

如果geeks_defaulttablespace不存在,您可以使用以下语句创建它:

CREATE TABLESPACE geeks_default
 OWNER geeks
 LOCATION E'C:\\pgdata\\geeks';

现在使用以下命令将 escape_string_warning 配置变量设置为 off:

ALTER DATABASE my_renamed_db SET escape_string_warning TO off;