在PostgreSQL中,一个数据库可以包含多个schema,使得多个用户使用一个数据库而不会互相干扰,也便于管理员管理,其中public schema是默认配置。Hologres兼容PostgreSQL,您可以参照以下图来理解Hologres中的对象层级关系。

Hologres新增schema功能之后,表的存储结构从database.table改变为database.schema.table。每一张表归属于一个schema,一个Database可以有多个schema。不同的schema下可以有相同的对象(表名、数据类型等)。

说明 Hologres当前版本主要支持CREATE SCHEMAALTER SCHEMA RENAME以及在schema的建表功能。暂时不支持 DROP SCHEMA

public schema

每一个数据库的默认schema都是public schema,若不新建schema,在该数据库下建的表都会默认存储在public schema。

执行以下语句即可查看当前的schema。
select current_schema(); //查看当前schema
\d tablename; //查看某张表属于哪个schema,该语句只适用于终端

create schema

  1. 新建schema
    若业务有特殊需求,可以在某个数据库下新建schema,示例SQL如下:
    create schema schemaname; //新建schema
    set search_path to schemaname; //切换到新的schema下
    create table blink_demo (id text); //在新的schema下建表
    select current_schema(); //查看当前schema
    
    示例sql如下:
     create schema my_schema;
     set search_path to my_schema;
     create table blink_demo (id text);
     select current_schema();
     \d blink_demo;
  2. 跨schema建表
    Hologres也支持跨schema对表进行操作,只需在表名前面加上schema.table即可,示例如下:
    1. 在新的schema下为public schema建表
      create table public.mytest (
        name text,
        id int);
    2. 在public schema下为新的schema建表
      set search_path to public;
      create table my_schema.mytest (
        name text,
        id int,
        age int
      );