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 模式介绍

你可能感兴趣的:(数据库,oracle,数据库)