资讯专栏INFORMATION COLUMN

PostgreSQL 5.7. Schemas 笔记

617035918 / 378人阅读

摘要:笔记一个数据库包含多个里包含的下一层逻辑结构就是也包括各种不同里的名可以相同在创建一个新的时,会自动为其创建一个名为的。如果未设置变量,那么会将你创建的所有对象默认放入中。执行就能看到其名称。

PostgreSQL 5.7. Schemas 笔记

https://www.postgresql.org/docs/9.4/ddl-schemas.html

A database contains one or more named schemas, which in turn contain tables. Schemas also contain other kinds of named objects, including data types, functions, and operators. The same object name can be used in different schemas without conflict; for example, both schema1 and myschema can contain tables named mytable. Unlike databases, schemas are not rigidly separated: a user can access objects in any of the schemas in the database he is connected to, if he has privileges to do so.

一个数据库包含多个schema, schema里包含tables, database 的下一层逻辑结构就是 schema

schema 也包括各种 objects, data types, functions, operators

不同schem里的table名可以相同

在创建一个新的 database 时, PostgreSQL 会自动为其创建一个 名为 public 的 schema。 如果未设置 search_path 变量,那 么 PostgreSQL 会将你创建的所有对象默认放入 public schema 中。_

使用schema带来的好处

允许多用户使用一个数据库而不会相互干扰, 数据隔离

将数据库对象组织到逻辑组中以使其更易于管理

第三方应用程序可以放在多带带的模式中, 这样它们就不会与其他对象的名称冲突

5.7.1. Creating a Schema

code example:

CREATE SCHEMA myschema;

访问schema的表

schema.table

实际上,更通用的语法

database.schema.table

在schema里创建表

CREATE TABLE myschema.mytable (
 ...
);

删除空schema

DROP SCHEMA myschema;

删除schema 并且也删除其中的对象

DROP SCHEMA myschema CASCADE;

为某个用户创建schema

CREATE SCHEMA schemaname AUTHORIZATION username;
5.7.2. The Public Schema

默认创建的表都在public schema

下面两条语句是等价的

CREATE TABLE products ( ... );
CREATE TABLE public.products ( ... );
5.7.3. The Schema Search Path

当执行类 似 SELECT * FROM dogs 这种语句时, PostgreSQL 是怎么知道要查的是哪个 schema 中的表 呢?

可以加schema前缀解决, 也可以设置 search_path 变量解决

查看

SHOW search_path;
search_path
--------------
 "$user",public
PostgreSQL 有一个少为人知的系统变量叫作 user , 它代表了当前登录用户的名称。 执行 SELECT user 就能看到其名称。
对于search_path 里的$user, 如果当前登录的角色是 doggy, 那么所有的查询都会优先去 doggy schema 中寻找目标表, 如果找不到才会去 public schema 下找

设置新的schema倒search path里

SET search_path TO myschema,public;

这样 默认 创建访问 table 都在 myschema schema里

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39032.html

相关文章

  • 升级 postgresql

    摘要:但如果涉及到跨大版本升级比如升级到,这种直接替换软件就不行了,因为跨版本的内部存储形式发生了变化官方对于升级提供了种方法,这里迁移我使用了来进行处理细节可以参考官方文档。 1 场景描述 最近使用 postgresql 命令行比较多,就找了个类似 mycli 工具,pgcli,这个是针对 postgresql 的,兴冲冲的安装了 brew install pgcli 没想到这货自动帮我...

    learn_shifeng 评论0 收藏0
  • PostgreSQL获取用户下所有对象的权限情况

    摘要:直接切换到对应的库下执行注意,这个不能获取到和的归属情况,只能获取到表和序列的的情况上面的这个,能查出下面的这种归属的对于下面的这种情况,都查不出来的。表的是一个,表里面又有其它的授权非的下 直接切换到对应的库下执行select nsp.nspname as SchemaName ,cls.relname a...

    番茄西红柿 评论0 收藏2637
  • postgresql学习笔记1---安装和psql基本操作

    本文是PostgreSQL修炼之道这本书的学习笔记,记录下疑惑或不解的地方. 这里也列一些资源: 官方文档:http://www.postgresql.org/files/documentation/pdf/9.4/postgresql-9.4-A... 中文文档:http://www.php100.com/manual/PostgreSQL8/ 阮一峰的博客:http://www.ruanyif...

    GeekQiaQia 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<