4.3 模式
4.3.1 什么是模式
可以理解为一个命名空间或目录,不同模式下可以有相同的表、函数等对象而不会产生冲突
便于管理,只要有权限,各个模式的对象可以相互调用
需要模式的主要原因:
允许多个用户同时使用同一个数据库且用户之间不互相干扰
把数据库对象放在不同的模式下组织成逻辑组,使数据对库对象更便于管理
第三方的应用可以放在不同的模式中,这样就不会和其他对象的名字产生冲突了
4.3.2 模式的使用
创建模式的语法:
CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ] CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]备注:
创建名为"osdba"的模式:
CREATE SCHEMA osdba;查看已有的模式:
\dn备注:均在命令行模式下运行
删除模式:
DROP SCHEMA osdba;为用户osdba创建名为osdba的模式
CREATE SCHEMA AUTHORIZATION osdba;修改名称和属性
ALTER SCHEMA name RENAME TO newname ALTER SCHEMA name OWNER TO newowner
4.3.3 公共模式
默认访问模式中的对象,一般是
模式名.表名(对象名),默认情况不写模式名的情况下,访问的是模式名是public模式
4.3.4 模式的搜索路径
显示当前搜索路径:
SHOW search_path;
4.3.5 模式的权限:
回收public模式中的权限
REVOKE CREATE ON SCHEMA public FROM PUBLIC;备注:
第一个public是模式的名称
第二个PUBLIC是指所有用户
4.3.6 模式的可移植性
有些数据库系统中可能根本没有模式,而是通过允许跨数据库访问来提供模式的功能,如MySQL。如果需要在这些数据库上实现最大的可移植性,或许不应该使用模式。假设MySQL实例中有3个数据库,在移植到PostgreSQL中时,或许你应该建3个模式,使其与MySQL实例中的3个数据库相对应,而不是在PostgreSQL中建3个数据库与之对应。
最后更新于