Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改模式';PostgreSQL数据库中的结构_Sql_Postgresql_Multi Tenant - Fatal编程技术网

更改模式';PostgreSQL数据库中的结构

更改模式';PostgreSQL数据库中的结构,sql,postgresql,multi-tenant,Sql,Postgresql,Multi Tenant,我有一个Postgres数据库,其中包含一些模式(所有模式都具有相同的结构),我想知道是否有可能更改同一数据库中所有模式的结构(表名、新列等)。数据库中模式的用途是什么 谢谢。我将把重点放在你问题的后半部分,因为我认为它将回答前半部分(我不确定我是否理解前半部分) 数据库中模式的用途是什么 当我第一次从MySQL切换到PostgreSQL时,这让我很困惑。Postgres模式本质上与MySQL数据库相同。事实上,根据该报告: 在MySQL中,物理上,模式与数据库同义 这就引出了一个问题:什么

我有一个Postgres数据库,其中包含一些模式(所有模式都具有相同的结构),我想知道是否有可能更改同一数据库中所有模式的结构(表名、新列等)。数据库中模式的用途是什么


谢谢。

我将把重点放在你问题的后半部分,因为我认为它将回答前半部分(我不确定我是否理解前半部分)

数据库中模式的用途是什么


当我第一次从MySQL切换到PostgreSQL时,这让我很困惑。Postgres模式本质上与MySQL数据库相同。事实上,根据该报告:

在MySQL中,物理上,模式数据库同义


这就引出了一个问题:什么是PostgreSQL数据库?从:

更准确地说,数据库是模式的集合,模式包含表、函数等。因此,完整的层次结构是:服务器、数据库、模式、表(或其他类型的对象,如函数)


那么PostgreSQL数据库本质上是模式的集合?似乎没有意义,为什么我们需要层次结构中的那一步?让我们来看一下文档的A:

PostgreSQL数据库群集包含一个或多个命名数据库。用户和用户组在整个集群中共享,但没有其他数据在数据库中共享。与服务器的任何给定客户端连接只能访问单个数据库中的数据,即连接请求中指定的数据库

数据库包含一个或多个命名模式,而这些模式又包含表。模式还包含其他类型的命名对象,包括数据类型、函数和运算符。相同的对象名可以在不同的模式中使用,而不会产生冲突;例如,
schema1
myschema
都可以包含名为
mytable
的表。与数据库不同,模式不是严格分开的:用户可以访问他所连接的数据库中任何模式中的对象,如果他有权限这样做的话



因此,在PostgreSQL中,模式包含表、函数等,数据库管理用户/组连接以及对特定模式集群的访问/角色。通常,我在一个数据库下工作,并将信息分解为模式以分割信息。

抱歉-错误地按enter键。模式描述数据库的整体组织以及数据库中所有表之间的关系(或不关系)。表格可以更改,但如果没有更具体的信息,很难给出全面的答案。本视频可能有助于解释模式和表是如何工作的。如果你想更深入地学习,斯坦福大学提供了一个免费的在线数据库课程。SQL标准定义了两个级别的“名称空间”:目录和模式。“目录”可以包含多个“模式”。Postgres“数据库”在一定程度上映射到SQL标准中的目录概念。这与SQLServer管理数据库和模式的方式基本相同。其他数据库管理系统(如H2、HSQLDB)也有类似的两级名称空间。谢谢,@a_horse_和_no_name不知道这一点,这对我的回答非常有用:)