CREATE SCHEMA
Hologres支持跨Schema創(chuàng)建表。本文為您介紹如何在Hologres中創(chuàng)建Schema,以及跨Schema創(chuàng)建表。
背景信息
Hologres兼容PostgreSQL,支持的Schema功能與PostgreSQL相同。
Hologres新增Schema功能后,表的存儲(chǔ)結(jié)構(gòu)由database.table
變?yōu)?span data-tag="ph" id="codeph-rwx-fo8-lfs" class="ph">database.schema.table
。
Hologres當(dāng)前版本主要支持創(chuàng)建Schema、重命名Schema以及在Schema中創(chuàng)建表等功能。
在Hologres中,每張表歸屬于一個(gè)Schema,一個(gè)數(shù)據(jù)庫可以包含多個(gè)Schema,方便您管理。同時(shí),多個(gè)用戶使用同一個(gè)數(shù)據(jù)庫時(shí)不會(huì)互相干擾。
不同的Schema可以包含相同的表名稱或數(shù)據(jù)類型。
創(chuàng)建數(shù)據(jù)庫時(shí)系統(tǒng)默認(rèn)創(chuàng)建一個(gè)public Schema。如果您不創(chuàng)建其它Schema,則在該數(shù)據(jù)庫創(chuàng)建的所有表默認(rèn)存儲(chǔ)在public Schema中。您可以執(zhí)行以下語句查看當(dāng)前Schema。
SELECT CURRENT_SCHEMA();--查看當(dāng)前Schema。
\d tablename; --查看目標(biāo)表所屬的Schema。該語句只適用于終端。
Hologres實(shí)例對象的層級關(guān)系如下圖所示。
操作步驟
創(chuàng)建Schema。
在數(shù)據(jù)庫中創(chuàng)建Schema的示例SQL語句如下。
CREATE SCHEMA schemaname;--創(chuàng)建Schema。 SET search_path TO schemaname;--切換至目標(biāo)Schema。 CREATE TABLE blink_demo (id text); --在目標(biāo)Schema中創(chuàng)建表。 SELECT CURRENT_SCHEMA();--查看當(dāng)前Schema。
跨Schema創(chuàng)建表。
您可以使用
schema.table
語句,添加Schema名稱至表名稱之前,即可跨Schema創(chuàng)建表。具體如下:在目標(biāo)Schema中為public Schema創(chuàng)建表。示例SQL語句如下。
CREATE TABLE public.mytest ( name text, id INT);
在public Schema中為目標(biāo)Schema創(chuàng)建表。示例SQL語句如下。
SET search_path TO public; CREATE TABLE my_schema.mytest ( name text, id INT, age INT );
其他操作
您可以通過執(zhí)行以下SQL語句,查看指定Schema下面所有表的存儲(chǔ)大小。
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;