CREATE SCHEMAは、現在のデータベースに新しいスキーマを入力します。
説明
CREATE SCHEMAは、現在のデータベースに新しいスキーマを入力します。 スキーマ名は、現在のデータベース内の既存のスキーマの名前とは異なる必要があります。
スキーマは本質的に名前空間であり、名前が他のスキーマに存在する他のオブジェクトの名前と重複できる名前付きオブジェクト (テーブル、データ型、関数、および演算子) を含みます。 名前付きオブジェクトは、スキーマ名をプレフィックスとして名前を「修飾」するか、または目的のスキーマを含む検索パスを設定することによってアクセスされます。 修飾されていないオブジェクト名を指定するCREATEコマンドは、現在のスキーマ (関数current_schemaで決定できる検索パスの先頭にあるスキーマ) にオブジェクトを作成します。
オプションで、CREATE SCHEMAに新しいスキーマ内にオブジェクトを作成するサブコマンドを含めることができます。 サブコマンドは、AUTHORIZATION句を使用する場合、作成されたすべてのオブジェクトがそのユーザーによって所有されることを除いて、スキーマの作成後に発行される個別のコマンドと基本的に同じように扱われます。
概要
CREATE SCHEMA schema_name [認証role_specification ] [ schema_element [ ... ] ]
スキーマ認証の作成role_specification [ schema_element [ ... ] ]
スキーマ名が存在しない場合にスキーマを作成する [認証role_specification]
承認が存在しない場合にスキーマを作成するrole_specification
ここで、role_specificationは次のようになります。
user_name
| CURRENT_USER
| セッション_ユーザー パラメーター
schema_name: 作成するスキーマの名前。 省略した場合は、user_nameがスキーマ名として使用されます。 名前はシステムスキーマ用に予約されているため、名前をpg_で始めることはできません。user_name: 新しいスキーマを所有するユーザーのロール名。 省略した场合, デフォルトはコマンドを実行するユーザーになります。 別のロールが所有するスキーマを作成するには、そのロールの直接または間接のメンバーであるか、スーパーユーザーである必要があります。schema_element: スキーマ内に作成されるオブジェクトを定義するSQL文。 現在、CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE SEQUENCE、CREATE TRIGGER、およびGRANTのみが、CREATE SCHEMA内の句として受け入れられています。 他の種類のオブジェクトは、スキーマが作成された後、別々のコマンドで作成され得る。IF NOT EXISTS: 同じ名前のスキーマがすでに存在する場合は、何もしません (通知を発行する以外) 。 このオプションを使用すると、schema_elementのサブコマンドを含めることはできません。
注
スキーマを作成するには、呼び出し元のユーザーに、現在のデータベースに対するcreate権限が必要です。 (もちろん、スーパーユーザーはこのチェックをバイパスします。)
例
スキーマを作成する:
スキーマを作成します。ユーザーjoeのスキーマを作成します。スキーマはjoeという名前にもなります。
スキーマ認可ジョーを作成します。testという名前のスキーマが既に存在する場合を除き、ユーザーjoeが所有するtestという名前のスキーマを作成します。 (joeが既存のスキーマを所有しているかどうかは関係ありません。)
CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;スキーマを作成し、その中にテーブルとビューを作成します。
CREATE SCHEMAハリウッド
CREATE TABLE films (タイトルテキスト、リリース日、賞テキスト [])
ビューの勝者を作成する
SELECTタイトル、リリース映画から賞はNULLではありません。個々のサブコマンドはセミコロンで終わりません。
以下は、同じ結果を達成するための同等の方法です。
SCHEMAハリウッドを作成します。
CREATE TABLE hollywood.films (タイトルテキスト、リリース日、賞テキスト []);
CREATE VIEW hollywood.winners AS
SELECTタイトル、リリースからhollywood.films賞はNULLではありません。