psql 模式(SCHEMA)

模式是数据库领域的一个基本概念,有些数据库把模式和用户合二为一了,而postgresql则是有清晰的模式定义。

模式是数据库中的一个概念,可以理解为一个命名空间或目录,不同模式下可以有相同名称的表、函数等对象而不会产生冲突。提出模式的概念是为了方便管理,只要有权限,各个模式的对象都可以互相调用。

在postgresql中,一个数据库包含一个或多个模式,模式内又包含表、函数等内容。不同数据库表示不一样。
模式优点:

  • 允许多个用户使用一个数据库而不会彼此干扰。
  • 把数据库对象组织成逻辑组,让它们更便于管理。
  • 第三方的应用可以放在不同的模式中,这样它们就不会和其它对象的名字冲突。

语法:

--- 创建模式
CREATE SCHEMA schemaname [ AUTHORIZATION username ... ] ;
--- 查看已有模式
    \dn
--- 删除模式
DROP SCHEMA schemaname;

模式搜索路径

全称的名字写起来非常费劲,并且我们最好不要在应用里直接写上特定的模式名。因此,表通常都是用未修饰的名字引用的,这样的名字里只有表名字。系统通过查找一个搜索路径来判断一个表究竟是哪个表,这个路径是一个需要查找的模式列表。 在搜索路径里找到的第一个表将被当作选定的表。如果在搜索路径中没有匹配表,那么就报告一个错误,即使匹配表的名字在数据库其它的模式中存在也如此。

在搜索路径中的第一个模式叫做当前模式。除了是搜索的第一个模式之外, 它还是在 CREATE TABLE 没有声明模式名的时候,新建表所在的地方。
语法:

SHOW search_path;

修改默认模式:

SET search_path TO selfschema ,public;

模式的权限:

默认情况下,用户无法访问模式中不属于他们的对象。如果要访问,就要为模式赋予 “USAGE” 权限。

REVOKE CREATE ON SCHEMA schemaname FROM PUBLIC;
--- schemaname是模式名,PUBLIC是所有用户的意思。

模式的可移植性:

SQL标准中,同一个模式下的对象是不能被不同的用户拥有的,同时也没有public模式的概念。有些数据库也没有模式的概念。

PostgreSQL 模式介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

golemon.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值