PostgreSQL 模式等基础概念

集簇:

       一个PostgreSQL数据库集簇中包含一个或更多命名的数据库(类似于实例的概念)。 角色和一些其他对象类型被整个集簇共享,连接到服务器的客户端只能访问单个数据库中的数据,即在URL中指定的那个数据库。

       一个集簇的用户并不必拥有访问集簇中每一个数据库(database)的权限。 角色名的共享意味着
不可能在同一个集簇中出现重名的不同角色,即在两个database中也不能出现名称相同的角色。

模式:

       一个数据库包含一个或多个命名模式,模式中包含着表。模式还包含其他类型的命名对象,
包括数据类型、函数和操作符等。相同的数据库对象可以存在于不同的schema中不会冲突。

schema和database 的区别:
       和数据库不同,模式并不是被严格地 隔离:一个用户可以访问他们所连接的数据库中的所有模式内的对象,只要他们有足够的权限。

创建模式:

        create schema myschema;
        create schema schema_name authorization user_name;

在一个模式中访问数据库对象:
       myschema.mytabname   也可以使用 database.schema.tabname

删除模式:
drop schema myschema;

删除模式和相关数据库对象:
drop schema myschema cascade;

如果创建表的时候没有指定模式名,则默认都放入public模式下。

模式搜索路径:

      在实际的应用中,通常使用的是表名,而不会把数据库名、模式名这么冗长的路径都写上。所以需要通过变量search_path来搜索和拼凑表名的全路径。

       第一个元素说明一个和当前用户同名的模式会被搜索。如果不存在这个模式,该项将被忽
略。第二个元素指向我们已经见过的公共模式。

修改模式的搜索路径:

SET search_path TO myschema,public;

模式和权限:

       默认情况下,用户不能访问不属于他们的方案中的任何对象。要允许这种行为,模式的拥有
者必须在该模式上授予USAGE权限。

       一个用户也可以被允许在其他某人的模式中创建对象。要允许这种行为,模式上的CREATE权
限必须被授予。注意在默认情况下,所有人都拥有在public模式上的CREATE和USAGE权限。
这使得用户能够连接到一个给定数据库并在它的public模式中创建对象。回收这一特权的使
用模式调用:

       REVOKE CREATE ON SCHEMA public FROM PUBLIC;

系统目录模式:

      除public和用户创建的模式之外,每一个数据库还包括一个pg_catalog模式,它包含了系统
表和所有内建的数据类型、函数以及操作符。pg_catalog总是搜索路径的一个有效部分。如
果没有在路径中显式地包括该模式,它将在路径中的模式之前被搜索。这保证了内建的名称
总是能被找到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我曾阿牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值