PostgreSQL教程(二):图式的详细解释

PostgreSQL教程(二):图式的详细解释
一个数据库包含一个或多个命名模式和架构包含表。模式也包含其他对象,包括数据类型函数运算符。相同的对象名称可以用在不同的模式而不引起冲突;例如,两schema1和myschema可以包含一个表叫表与数据库、模式。不严格区分开来:一个用户可以访问的对象在任何模式中的数据库连接,只要他有权限

我们需要以下主要的原因

1)。允许多个用户使用数据库而不干扰其他用户。

2)。将数据库对象组织成逻辑组,使它们更易于管理

3)。第三方的应用可以放在不同的模式中,这样它们就不会与其他对象的名称发生冲突。
1。创造模式:

复制代码代码如下所示:

创建模式myschema;
通过上面的命令,我们可以创建一个myschema命名模式。创建模式后,它可以拥有自己的一组逻辑对象,如表、视图和函数。
2。公共模式:

介绍后,我们需要解释公共模式第一。我们每次创建新的数据库,PostgreSQL将自动创建这种模式我们。当您登录到数据库,我们将在该模式的形式操作各种数据对象(公共),如:

复制代码代码如下所示:

产品表(…)相当于创建表public.products(…)
三.权限:

默认情况下,用户不能看到不在模式属于它们的所有对象,让他们看到,该模式需要在架构给出了使用权限的所有者。为了让用户在架构中使用的对象,我们可能需要提供额外的权限,只要对object.postgresql可提供不同的权限类型根据不同的对象,如:

复制代码代码如下所示:

授予所有图式myschema公共;
以上所有的关键词将包含创建和使用两个权限。如果公共模式的创建myschema模式的权限,用户登录到架构将能够创建在myschema模式的任何物体,如:

复制代码代码如下所示:

创建表(myschema.products

product_no整数,

名称文本

价格数字检查(价格> 0),

);
将权限授予模式中的所有表时,需要将权限拆分为不同的表操作,例如:

复制代码代码如下所示:

在图式myschema改变默认权限

允许插入、选择、更新、删除、截断、引用、对表上的触发器;
当所有序列对象都是模式的权限时,您需要将权限拆分成不同的序列操作,例如:

复制代码代码如下所示:

在图式myschema改变默认权限

授予选择,更新使用,在序列到公共;
当权限授予模式中的所有函数时,只考虑执行权限,例如:

复制代码代码如下所示:

在图式myschema改变默认权限

函数授予公共执行;
你可以看到,建立在上面的公共模式的myschema图式的各种对象很不方便。接下来我们将介绍另一种方式,即通过角色对象,直接登陆,与myschema对象,然后我们可以创建各种对象直接在myschema模式。

复制代码代码如下所示:

创建角色myschema登录密码为123456;-与模式相关的角色创建对象。

创建模式myschema授权myschema;-模式与指定角色关联,模式名称和角色名称可以不相等。
Linux下的shell,登录到数据库中的角色myschema和成功登录到数据库的密码正确时。

复制代码代码如下所示:

D中U myschema > psql

密码:

考试= >创建测试表(我的整数);

创建表

考试= > --看看这个模式和表的列表信息,模式具有查看权限。

表的关系

架构名称型业主| | |

------------ + --------- + ------ + ----------

myschema测试表myschema | | |

(1行)
4。删除模式:

复制代码代码如下所示:

删除模式myschema;
如果要删除模式及其所有对象,请使用级联删除:

复制代码代码如下所示:

myschema级联删除模式;
5。模式搜索路径

当我们使用数据库对象时,我们可以使用它的全名来定位对象。然而,这往往是很繁琐的,我们要owner_name.object_name每time.postgresql提供一种模式类型的搜索路径,这类似于在$路径环境变量Linux,当我们执行一个shell命令,该命令仅为路径的目录列表,我们可以通过命令名称直接执行,否则会需要输入完整的路径name.postgresql还确定哪些表是通过寻找搜索路径表,这是一个需要抬头模式。第一个表中搜索路径的发现将被视为选定的表。如果没有匹配的表的搜索路径,然后一个错误据报道,即使匹配表的名称存在于该数据库的其他模式东南方.

搜索路径中的第一个模式称为当前模式。除了搜索的第一个模式之外,它也是新表在创建模式名称时不属于模式名称的模式:

复制代码代码如下所示:

考试= >显示search_path;

search_path

----

$用户

(1行)
可以将新模式添加到搜索路径中,例如:

复制代码代码如下所示:

集search_path到myschema,公共;
为搜索路径设置指定的模式,例如:

复制代码代码如下所示:

集search_path到myschema;-当前的搜索路径将只包括一个myschema模式。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部