pg中的schema用法
schema有点类似于操作系统中的文件夹,schema中保存tables、data types、function等。
schema is a named containers for tables.
schema的用途有
- 提供给数据库用户分开的环境
- 组织数据库对象为相关联的分组。
一个database包含多个schema,schema中可以包含data types、functions和operators。不同的schema内可以有同名的对象。
默认schema
pg里的默认schema是public,如果不指定schema就是在public下。如执行create table topic最后就会保存在public.topic下。
每一个新创建的database都有一个public schema。
语法
创建schema
CREATE SCHEMA schema_name;
schema name限制:
- 长度小于32
- 以小写字母或者_开头
- 不能以pg_开头,以pg_开头的是系统表相关
创建只能由某个用户username访问的schema,其中schemaname可以省略(默认与username一致)。
CREATE SCHEMA schemaname AUTHORIZATION username;
删除schema
删除一个为空的schema(其中的所有对象已经被删除):
DROP SCHEMA myschema;
删除一个模式以及其中包含的所有对象:
DROP SCHEMA myschema CASCADE;
schema 查找路径
为表指定特定的schema是很繁琐的,通常不指定schema,仅仅包含表的name。系统通过search path来决定表的含义,search path在schema列表中进行查找。返回第一个匹配的表名。如果没有匹配的则输出错