カテゴリ:

データベース、スキーマ、共有 DDL

CREATE SCHEMA

現在のデータベースに新しいスキーマを作成します。

さらに、このコマンドを使用して、現在の状態、または過去の特定の時刻/時点(Time Travelを使用)のいずれかで、 既存のスキーマを複製 できます。スキーマのクローン作成の詳細については、 クローニングに関する考慮事項 をご参照ください。

こちらもご参照ください:

ALTER SCHEMASHOW SCHEMAS

構文

CREATE [ OR REPLACE ] [ TRANSIENT ] SCHEMA [ IF NOT EXISTS ] <name>
  [ CLONE <source_schema>
        [ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ] ]
  [ WITH MANAGED ACCESS ]
  [ DATA_RETENTION_TIME_IN_DAYS = <num> ]
  [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
  [ COMMENT = '<string_literal>' ]

必須パラメーター

名前

スキーマの識別子を指定します。スキーマが作成されるデータベースに対して一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

オプションのパラメーター

TRANSIENT

スキーマを一時として指定します。一時スキーマにはFail-safe期間がないため、Time Travelを離れると追加のストレージコストは発生しません。ただし、これは、データが失われた場合にもFail-safeで保護されません。詳細については、 Fail-safeの理解と表示 をご参照ください。

また、定義により、一時的なスキーマで作成されたすべてのテーブルは一時的なものです。一時テーブルの詳細については、 CREATE TABLE をご参照ください。

デフォルト:値なし(つまり、スキーマは永続的)

CLONE ソーススキーマ

指定したソーススキーマのクローンを作成することを指定します。スキーマのクローン作成の詳細については、 CREATE <オブジェクト> ... CLONE をご参照ください。

AT | BEFORE ( TIMESTAMP => タイムスタンプ | OFFSET => 時差 | STATEMENT => id )

スキーマのクローンを作成するとき、 AT | BEFORE 句はTime Travelを使用して過去の特定の時点またはそれ以前のスキーマをクローンすることを指定します。

WITH MANAGED ACCESS

管理スキーマを指定します。管理アクセススキーマは、スキーマの所有者とともに権限管理を集中化します。

通常のスキーマでは、オブジェクトの所有者(つまり、オブジェクトに対する OWNERSHIP 権限を持つロール)は、オブジェクトに対する追加の権限を他のロールに付与できます。管理スキーマでは、スキーマの所有者が、スキーマ内のオブジェクトに対する 将来の付与 を含むすべての権限付与を管理します。オブジェクト所有者は、オブジェクトに対する OWNERSHIP 権限を保持します。ただし、オブジェクトの権限付与を管理できるのはスキーマ所有者のみです。

DATA_RETENTION_TIME_IN_DAYS = 数値

スキーマでTime Travelアクション(CLONE および UNDROP)を実行できる日数を指定し、スキーマで作成されたすべてのテーブルのデフォルトのTime Travel保持時間を指定します。詳細については、 Time Travelの理解と使用 をご参照ください。

このオブジェクトレベルパラメーターの詳細な説明、およびオブジェクトパラメーターの詳細については、 パラメーター をご参照ください。テーブルレベルの保持期間の詳細については、 CREATE TABLE および Time Travelの理解と使用 をご参照ください。

値:

  • Standard Edition: 0 または 1

  • Enterprise Edition:

    • 永続スキーマの場合は 090

    • 一次スキーマの場合は 0 または 1

デフォルト:

  • Standard Edition: 1

  • Enterprise Edition(またはそれ以上): 1 (データベースまたはアカウントレベルで別のデフォルト値が指定されていない場合)

注釈

0 の値は、スキーマのTime Travelを効果的に無効にします。

DEFAULT_DDL_COLLATION = '照合仕様'

スキーマに追加されたすべてのテーブルのデフォルトの 照合仕様 を指定します。デフォルトは、個々のテーブルレベルで上書きできます。

パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。

COMMENT = '文字列リテラル'

スキーマのコメントを指定します。

デフォルト:値なし

使用上の注意

  • スキーマを作成すると、現在のセッション用にアクティブ/現在のスキーマとして自動的に設定されます(スキーマに USE SCHEMA コマンドを使用するのと同等)。

  • 同じ名前のスキーマがデータベースに既に存在する場合、オプションの OR REPLACE キーワードがコマンドで指定されない限り、エラーが返され、スキーマは作成されません。

    重要

    OR REPLACE を使用することは、既存のスキーマで DROP SCHEMA を使用してから、同じ名前で新しいスキーマを作成することと同等です。ただし、ドロップされたスキーマは、システムから完全に削除された :emph:`` ではありません。代わりに、Time Travelに保持されます。Time Travelでドロップされたスキーマは、アカウントのデータストレージに寄与するため、これは重要です。詳細については、 Time TravelおよびFail-safeのストレージコスト をご参照ください。

  • 管理アクセススキーマでは、スキーマ所有者は含まれるオブジェクト(例:テーブルまたはビュー)の許可を管理しますが、オブジェクトに対する他の権限(USAGE、 SELECT、 DROP など)はありません。

永続スキーマを作成します。

CREATE SCHEMA myschema;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |         | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |         | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |         | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+

一時的なスキーマを作成します。

CREATE TRANSIENT SCHEMA tschema;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options   | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |           | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |           | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |           | 1              |
| 2018-12-10 09:35:32.326 -0800 | TSCHEMA            | N          | Y          | MYDB          | PUBLIC       |                                                           | TRANSIENT | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+

管理アクセススキーマを作成します。

CREATE SCHEMA mschema WITH MANAGED ACCESS;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options        | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |                | 1              |
| 2018-12-10 09:36:47.738 -0800 | MSCHEMA            | N          | Y          | MYDB          | ROLE1        |                                                           | MANAGED ACCESS | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |                | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |                | 1              |
| 2018-12-10 09:35:32.326 -0800 | TSCHEMA            | N          | Y          | MYDB          | PUBLIC       |                                                           | TRANSIENT      | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+