在 Apache Cloudberry 中创建和管理模式(Schema)
在 Apache Cloudberry 中,模式(schema)用于对数据库中的对象和数据进行逻辑组织。通过模式,可以在同一个数据库中创建多个同名对象(如表),只要它们位于不同的模式中就不会发生冲突。
默认的 "public" 模式
每个数据库都有一个默认的模式 ,名为 public。如果你没有显式创建任何模式,新建的对象将会创建在 public 模式中。所有数据库角色(用户)默认拥有该模式的 CREATE
和 USAGE
权限。你可以创建自定义模式,并授予用户相应权限以访问该模式。
创建模式
使用 CREATE SCHEMA
命令创建一个新模式。例如:
=> CREATE SCHEMA myschema;
要在某个模式中 创建或访问对象,需要使用模式名和对象名的组合,通过点号连接。例如:
myschema.table
访问模式的更多信息见 模式搜索路径。
你还可以创建属于其他用户的模式,用于将用户的活动限定在指定的命名空间内。语法如下:
=> CREATE SCHEMA `schemaname` AUTHORIZATION `username`;
模式搜索路径
要引用数据库中的某个对象,可以使用模式限定名。例如:
=> SELECT * FROM myschema.mytable;
你可以设置 search_path
配置参数,用于指定数据库在查找对象时搜索模式的顺序。搜索路径中排在最前的模式被视为 默认模式。如果不指定模式名称,对象将创建在默认模式中。
设置模式搜索路径
使用 ALTER DATABASE
命令设置 search_path
参数。例如:
=> ALTER DATABASE mydatabase SET search_path TO myschema,
public, pg_catalog;
你也可以通过 ALTER ROLE
命令为特定用户设置 search_path
,例如:
=> ALTER ROLE sally SET search_path TO myschema, public,
pg_catalog;
提示
在使用 Apache Cloudberry 时,建议你:
- 创建新对象时显式指定模式名,以确保对象被创建在预期的模式中。
- 不要依赖
search_path
来隐式指定非public
模式。否则,数据库可能会将对象创建在非预期的模式中。
查看当前模式
使用 current_schema()
函数查看当前默认模式。例如:
=> SELECT current_schema();
使用 SHOW
命令查看当前的搜索路径。例如:
=> SHOW search_path;