すべてのプロダクト
Search
ドキュメントセンター

Hologres:CREATE SCHEMA

最終更新日:Jan 11, 2025

Hologres では、スキーマを跨いでテーブルを作成できます。このトピックでは、Hologres データベースでスキーマを作成する方法と、スキーマを跨いでテーブルを作成する方法について説明します。

背景情報

Hologres は PostgreSQL と互換性があり、PostgreSQL と同じスキーマ関連操作をサポートしています。

Hologres でスキーマ機能が有効になると、テーブルのストレージ構造は database.table から database.schema.table に変更されます。

Hologres の現在のバージョンでは、スキーマの作成、スキーマの名前変更、およびスキーマへのテーブルの作成が可能です。

Hologres では、各テーブルは 1 つのスキーマに属し、データベースには複数のスキーマを含めることができます。スキーマは、テーブルの論理グループとして機能し、管理を容易にします。また、スキーマを使用すると、複数のユーザーが互いに干渉することなく同じデータベースを使用できます。

同じテーブル名またはデータ型を異なるスキーマで使用しても競合は発生しません。

Hologres は、新しいデータベースごとに [public] という名前のスキーマを自動的に作成します。スキーマを作成しない場合、データベースに作成されたすべてのテーブルは [public] スキーマに格納されます。現在のスキーマを確認するには、次のいずれかのステートメントを実行します:

SELECT CURRENT_SCHEMA(); -- 現在のスキーマを確認します。
\d tablename; -- 目的のテーブルが属するスキーマを確認します。このステートメントは、ターミナルにのみ適用されます。

次の図は、Hologres インスタンスオブジェクトの階層関係を示しています。层级关系

手順

  1. スキーマを作成します。

    データベースにスキーマを作成し、そのスキーマにテーブルを作成するには、次の SQL ステートメントの例を実行します。

    CREATE SCHEMA schemaname; -- スキーマを作成します。
    SET search_path TO schemaname; -- 新しいスキーマに切り替えます。
    CREATE TABLE blink_demo (id text); -- 新しいスキーマにテーブルを作成します。
    SELECT CURRENT_SCHEMA(); -- 現在のスキーマを確認します。

  2. スキーマを跨いでテーブルを作成します。

    スキーマを跨いでテーブルを作成するには、テーブル作成ステートメントでテーブル名を Schema name.Table name の形式で指定します。ステートメントの例:

    • 現在のスキーマに基づいて [public] スキーマにテーブルを作成します。

      CREATE TABLE public.mytest (
        name text,
        id INT);
    • [public] スキーマに切り替え、my_schema スキーマにテーブルを作成します。

      SET search_path TO public;
      CREATE TABLE my_schema.mytest (
        name text,
        id INT,
        age INT
      );

その他のサポートされている操作

次の SQL ステートメントを実行して、スキーマ内のすべてのテーブルの合計ストレージサイズをクエリできます。

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_name> を指定したスキーマの名前に置き換えます。
GROUP BY table_schema;