本ページでは、スキーマの作成方法について説明します。

構文

CREATE SCHEMA AUTHORIZATION username schema_element [ ... ];

パラメーター

パラメーター 説明
username 新しいスキーマを所有するユーザーの名前。

スキーマはユーザー名と同じ名前になります。

  • スーパーユーザーのみが、自分以外のユーザーが所有するスキーマを作成できます。
  • Oracle と互換性のある POLARDB クラスターでは、ロールとユーザー名はすでに存在している必要がありますが、スキーマが存在しない場合があります。
  • Oracle では、ユーザー (スキーマと同等) が存在している必要があります。
schema_element スキーマ内に作成されるオブジェクトを定義する SQL 文。

CREATE TABLE、CREATE VIEW、および GRANT が CREATE SCHEMA 内の句として受け入れられます。 その他の種類のオブジェクトは、スキーマの作成後に別の文で作成することができます。

説明

この CREATE SCHEMA 文のバリエーションは、ユーザー名が所有し、1 つ以上のオブジェクトが入力された新しいスキーマを作成します。 スキーマとオブジェクトの作成は単一のトランザクション内で行われるため、すべてのオブジェクトが作成されるか、スキーマを含めてどれも作成されないかのどちらかです。

スキーマは本質的には名前空間です。 これには、他のスキーマに存在する他のオブジェクトの名前と重複する可能性があるテーブルやビューなどの名前付きオブジェクトが含まれています。 名前付きオブジェクトにアクセスするには、スキーマ名を接頭辞として使用して名前を修飾するか、目的のスキーマを含む検索パスを設定します。 非修飾オブジェクトは現在のスキーマに作成されます。 検索パスの先頭にあるスキーマは、CURRENT_SCHEMA 関数で決定できます。 検索パスの概念と CURRENT_SCHEMA 関数は、Oracle データベースと互換性がありません。

CREATE SCHEMA には、スキーマ内にオブジェクトを作成するためのサブ文が含まれています。 サブ文は、基本的にスキーマの作成後に発行される個別の文と同じように扱われます。 作成されたすべてのオブジェクトは、指定されたユーザーが所有します。

スキーマを作成するには、呼び出し元のユーザーが現在のデータベースに対する CREATE 権限を持っている必要があります。

CREATE SCHEMA AUTHORIZATION enterprisedb
    CREATE TABLE empjobs (ename VARCHAR2(10), job VARCHAR2(9))
    CREATE VIEW managers AS SELECT ename FROM empjobs WHERE job = 'MANAGER'
    GRANT SELECT ON managers TO PUBLIC;