📜  PostgreSQL – 架构

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

PostgreSQL – 架构

在 PostgreSQL 中,模式是一个命名空间,其中包含命名的数据库对象,例如表、视图、索引、数据类型、函数和运算符。
要访问架构的对象,用户需要使用架构名称作为前缀来限定其名称,如下所示:

Syntax: schema_name.object_name

一个数据库可以包含一个或多个模式,而每个模式只属于一个数据库。两个模式可以具有共享相同名称的不同对象。例如,你可能有sales ,有一个架构staff表和公共模式也有staff表。当您参考staff表时,您必须对其进行如下限定:

public.staff

or,

sales.staff

有多种需要使用模式的场景:

  • 模式允许用户将数据库对象(例如,表)组织成逻辑组,以使其更易于管理。
  • 模式使多个用户可以使用一个数据库而不会相互干扰。

公共模式

PostgreSQL 为所有数据库生成一个名为public的模式。无论用户在没有指定模式名称的情况下创建什么对象,PostgreSQL 都会自动将其放入这个public模式中。因此,以下语句是相等的:

CREATE TABLE table_name(...);

and

CREATE TABLE public.table_name(...);

架构和特权

用户只能访问他们拥有的架构中的对象。这意味着他们无法访问架构中不属于他们的任何对象。要使用户能够访问他们不拥有的架构中的对象,您必须向架构上的用户授予 USAGE 权限,如以下语句所示:



GRANT USAGE ON SCHEMA schema_name TO user_name;

要允许用户在他们不拥有的架构中创建对象,您需要授予他们对该架构的 CREATE 权限。

GRANT CREATE ON SCHEMA schema_name TO user_name;

注意:默认情况下,每个用户在公共架构上都有 CREATE 和 USAGE。

模式操作

PostgreSQL 允许以下操作:

  • 要创建新模式,请使用 CREATE SCHEMA 语句。
  • 要重命名架构或更改其所有者,请使用 ALTER SCHEMA 语句。
  • 要删除模式,请使用 DROP SCHEMA 语句。