Hologres支持跨Schema创建表。本文为您介绍如何在Hologres中创建Schema,以及跨Schema创建表。
背景信息
Hologres兼容PostgreSQL,支持的Schema功能与PostgreSQL相同。
Hologres新增Schema功能后,表的存储结构由database.table
变为database.schema.table
。
Hologres当前版本主要支持创建Schema、重命名Schema以及在Schema中创建表等功能。
在Hologres中,每张表归属于一个Schema,一个数据库可以包含多个Schema,方便您管理。同时,多个用户使用同一个数据库时不会互相干扰。
不同的Schema可以包含相同的表名称或数据类型。
创建数据库时系统默认创建一个public Schema。如果您不创建其它Schema,则在该数据库创建的所有表默认存储在public Schema中。您可以执行以下语句查看当前Schema。
SELECT CURRENT_SCHEMA();--查看当前Schema。
\d tablename; --查看目标表所属的Schema。该语句只适用于终端。
Hologres实例对象的层级关系如下图所示。
操作步骤
创建Schema。
在数据库中创建Schema的示例SQL语句如下。
CREATE SCHEMA schemaname;--创建Schema。 SET search_path TO schemaname;--切换至目标Schema。 CREATE TABLE blink_demo (id text); --在目标Schema中创建表。 SELECT CURRENT_SCHEMA();--查看当前Schema。
跨Schema创建表。
您可以使用
schema.table
语句,添加Schema名称至表名称之前,即可跨Schema创建表。具体如下:在目标Schema中为public Schema创建表。示例SQL语句如下。
CREATE TABLE public.mytest ( name text, id INT);
在public Schema中为目标Schema创建表。示例SQL语句如下。
SET search_path TO public; CREATE TABLE my_schema.mytest ( name text, id INT, age INT );
其他操作
您可以通过执行以下SQL语句,查看指定Schema下面所有表的存储大小。
SELECT table_schema, pg_size_pretty(SUM(pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name))::decimal)) AS schema_size
FROM information_schema.tables
WHERE table_schema = '<schema_name>'--替换为您指定的Schema名称
GROUP BY table_schema;