PostgreSQL 模式17 Mar 2025 | 6 分钟阅读 在本节中,我们将学习 PostgreSQL 模式、公共模式、PostgreSQL 如何使用模式搜索路径来解析模式中的对象、PostgreSQL 模式和权限以及使用 PostgreSQL 模式的优势。 PostgreSQL 模式介绍每个数据库都以一个模式开始,它应该是公共模式。模式是表的命名集合。 ![]() 模式是一个命名空间,它提供多个对象,例如:
![]() 注意:PostgreSQL 模式是保存命名对象的命名空间。在 PostgreSQL 模式中,我们可以通过在名称前加上模式名称作为前缀来访问模式的对象,如下所示: 或者,我们可以设置包含该模式的搜索路径,我们将在未来介绍模式搜索路径。 一个数据库可以有一个或多个模式,而每个模式仅存在于一个数据库中,并且两个模式可以包含共享相似名称的不同对象。 例如 假设我们有包含Employee 表的 Company 模式,并且公共模式也具有Employee 表。 当我们引用 Employee 表时,它应如下所示: 为什么我们需要在 PostgreSQL 中使用模式?在 PostgreSQL 中,我们出于以下主要原因使用模式:
因此,出于创建目的,我们可以将应用程序数据分开保存在模式高级管理中。 对于最终用户目的,我们可以通过踩踏对方的方式将我们的用户保留在不同的模式中。 公共模式我们在 PostgreSQL 教程的早期主题中创建了表,而没有描述任何模式名称。 这些表和其他对象默认情况下会自动放入公共模式中。 对于每个新数据库,PostgreSQL 都会生成一个名为public的模式。 因此,以下命令是平行的: PostgreSQL 模式搜索路径
例如 要访问 Employee 表,我们使用 company.Employee。 注意
输出 在执行上述命令后,我们将获得以下输出 ![]() 注意:PostgreSQL 对我们在数据库中创建的每个新对象都使用 public。我们可以使用下面的 SHOW 语句来查看当前的搜索路径。 输出 在执行上述命令后,我们将获得以下输出 ![]() 在上面的输出中
要创建新模式,我们可以使用 CREATE SCHEMA 命令 输出 ![]() 要将新模式添加到搜索路径,我们可以使用以下语句: 输出 ![]() 如果我们创建一个没有描述模式名称的新表 Employee,则 PostgreSQL 会将此 Employee 表放入 Company 模式: 输出 ![]() 下面的屏幕截图显示了新模式 Company 和属于 Company 模式的 Employee 表: ![]() 要访问 Company 模式中的 Employee 表,我们可以使用以下命令之一: public 模式是搜索路径中的第二个组件;因此,要访问公共模式中的 Employee 表,我们应该在下面指定表名 一旦我们执行所有以上语句,我们将获得以下输出。 运行第一个命令后,我们将获得以下输出 ![]() 执行第二个命令后,我们将获得以下输出 ![]() 执行最后一个命令后,我们将获得以下输出 ![]() 执行所有三个命令后,我们将获得相同的输出,这就是为什么我们可以使用以上任何查询来访问 Company 模式中的员工表。 注意:我们也可以删除公共模式,因为它不是唯一的模式。PostgreSQL 模式和权限用户只能有权访问他们在其中创建对象的模式,这意味着用户不能使用他们未创建的模式中的任何其他对象。 因此,我们必须授予用户使用权限以获得他们未创建的模式中所有对象的访问权限。 以下命令用于获取用户对模式的使用权限 要允许用户在他们不创建的模式中创建对象,我们必须授予他们 CREATE 权限。 以下命令用于授予对模式的创建权限 注意:默认情况下,每个用户都具有对公共模式的 USAGE 和 CREATE 权限。如果我们不想使用以下命令的帮助访问该权限,我们可以撤销该权限。 在这里,第一个 public 指的是 模式,第二个 public 指的是 每个用户。 PostgreSQL 模式操作
使用 PostgreSQL 模式的好处该模式允许我们简化许多用户使用一个数据库,而无需相互涉及。 PostgreSQL 模式的一些常见优势如下:
下一主题PostgreSQL 创建模式 |
我们请求您订阅我们的新闻通讯以获取最新更新。