CREATE SCHEMA

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

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

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

ALTER SCHEMADESCRIBE SCHEMADROP SCHEMASHOW SCHEMASUNDROP SCHEMA

構文

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 = <integer> ]
  [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
  [ EXTERNAL_VOLUME = <external_volume_name> ]
  [ CATALOG = <catalog_integration_name> ]
  [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

必須パラメーター

name

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

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

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

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

TRANSIENT

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

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

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

CLONE source_schema

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

AT | BEFORE ( TIMESTAMP => timestamp | OFFSET => time_difference | STATEMENT => id )

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

WITH MANAGED ACCESS

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

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

DATA_RETENTION_TIME_IN_DAYS = integer

スキーマで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を効果的に無効にします。

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Snowflakeがスキーマ内のテーブルのデータ保持期間を延長して、テーブル上のストリームが古くなるのを防ぐことができる最大日数を指定するオブジェクトパラメーター。

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

EXTERNAL_VOLUME = external_volume_name

Icebergテーブル に使用するデフォルト外部ボリュームを指定するオブジェクトパラメーター。

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

CATALOG = catalog_integration_name

Icebergテーブル に使用するデフォルトのカタログ統合を指定するオブジェクトパラメーター。

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

DEFAULT_DDL_COLLATION = 'collation_specification'

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

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

COMMENT = 'string_literal'

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

デフォルト: 値なし

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

タグ の名前とタグ文字列の値を指定します。

タグ値は常に文字列であり、タグ値の最大文字数は256です。

ステートメントでのタグの指定に関する情報については、 オブジェクトおよび列のタグクォータ をご参照ください。

アクセス制御の要件

この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

メモ

CREATE SCHEMA

データベース

通常のアクセススキーマと 管理アクセス スキーマの両方を作成できます。

CREATE SCHEMA ... CLONE ... WITH MANAGED ACCESS

オプション

必要な権限は、ソーススキーマが管理されているか、管理されていないかによって異なります。

  • 管理: ソーススキーマの OWNERSHIP。

  • 非管理: ソーススキーマ上の MANAGE GRANTS ON ACCOUNT および USAGE。

USAGE

外部ボリューム、カタログ統合

EXTERNAL_VOLUME または CATALOG オブジェクトパラメーターをそれぞれ設定する場合は必須。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

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

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

    重要

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

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

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

  • メタデータについて。

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

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

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              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+
Copy

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

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              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+
Copy

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

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              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+
Copy