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;