PostgreSQL 修改Schema

在本节中,我们将学习PostgreSQL ALTER SCHEMA 命令,该命令用于更改模式的描述。

更改Schema命令

alter schema 命令将允许我们修改模式的定义。例如,我们还可以借助以下 alter schema 命令重命名模式。

改变Schema命令的语法如下:

ALTER SCHEMA schema_name   
RENAME TO new_name;  

我们在上述语法中使用了以下参数:

参数 描述
Alter Schema 它是一个关键字,用于更改模式的描述
Schema_Name 它用于描述模式的名称,我们需要对其进行重命名。
New_Name 该参数用于定义模式的新名称,我们不能以pg_开头新名称,因为在PostgreSQL中,这样的名称是为系统模式保留的。

除了重命名Schema,在 ALTER SCHEMA 中,我们还可以使用以下命令的帮助修改新Schema的所有者: 

ALTER SCHEMA schema_name   
OWNER TO { new_owner | CURRENT_USER | SESSION_USER};  

我们在上述语法中使用了以下参数:

参数 描述
Schema_Name 为了在 ALTER SCHEMA 条件下修改所有者,我们将描述模式的名称。
New_owner 它用于在 OWNER TO 条件中定义新所有者。

PostgreSQL ALTER SCHEMA 命令示例

让我们看几个例子,从中我们可以理解如何在 PostgreSQL 中使用 ALTER SCHEMA 命令。以下示例基于我们在PostgreSQL CREATE SCHEMA 部分中创建的模式。

使用 ALTER SCHEMA 命令重命名Schema

下面的示例解释为使用 help alter schema 命令重命名模式。

在这里,我们将myschema 模式重命名为Schema1模式:

ALTER SCHEMA myschema  
RENAME TO Schema1;  

执行上述命令后,我们将获得以下输出窗口:

同理,下面的例子描述了Company schema重命名为department:

ALTER SCHEMA Company  
RENAME TO department; 

执行上述命令后,我们将得到以下输出:

使用 alter schema 命令修改Schema的所有者

在此特定示例中,我们将借助 Alter schema将Schema1的所有者从myschema修改为Postgres :

ALTER SCHEMA Schema1  
OWNER TO postgres;  

然后,我们将执行用户创建的模式命令:

SELECT * FROM pg_catalog.pg_namespace  
WHERE nspname NOT LIKE 'pg_%' AND  
nspacl is NULL  
ORDER BY nspname;  

pg_namespace是一个目录,用于存储名称空间。命名空间是基本 SQL 模式的结构,每个命名空间都可以有不同的类型、关系等集合,而不会出现任何名称冲突。

执行上述查询后,我们将得到以下输出,其中包含一个表,我们可以看到Schema1模式由所有者 id 10维护,这是Postgres id。

热门文章

优秀文章