CREATE DATABASE¶
システムに新しいデータベースを作成します。
このコマンドは次のバリアントをサポートしています。
- CREATE OR ALTER DATABASE: データベースが存在しない場合はデータベースを作成するか、既存のデータベースを変更します。 
- CREATE DATABASE ... CLONE: 既存のデータベースのクローンを、現在の状態で、または過去の特定の時刻/時点で作成します(Time Travelを使用)。データベースのクローン作成の詳細については、 クローニングに関する考慮事項 をご参照ください。 
さらに、このコマンドは次の目的にも使用できます。
- 指定されたリストからデータベースを作成します。リストとの共有について をご参照ください。 
- 別のSnowflakeアカウントが提供する共有からデータベースを作成します。共有の詳細については、 Secure Data Sharingについて をご参照ください。 
- 既存のプライマリデータベース(つまり、セカンダリデータベース)のレプリカを作成します。データベース複製の詳細については、 複数のアカウントにわたるデータベース複製の概要 をご参照ください。 
Tip
SQL 以外にも、 Snowflake REST APIs、 Snowflake Python APIs、 Snowflake CLI などのインターフェイスを使うことができます。代替インターフェイス をご参照ください。
- こちらもご参照ください。
- ALTER DATABASE、 DESCRIBE DATABASE、 DROP DATABASE、 SHOW DATABASES、 UNDROP DATABASE - DESCRIBE SHARE , SHOW SHARES, CREATE LISTING, CREATE OR ALTER <オブジェクト> 
構文¶
標準データベース
CREATE [ OR REPLACE ] [ TRANSIENT ] DATABASE [ IF NOT EXISTS ] <name>
    [ CLONE <source_schema>
        [ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
        [ IGNORE TABLES WITH INSUFFICIENT DATA RETENTION ]
        [ IGNORE HYBRID TABLES ] ]
    [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
    [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
    [ EXTERNAL_VOLUME = <external_volume_name> ]
    [ CATALOG = <catalog_integration_name> ]
    [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
    [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
    [ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
    [ COMMENT = '<string_literal>' ]
    [ CATALOG_SYNC = '<snowflake_open_catalog_integration_name>' ]
    [ CATALOG_SYNC_NAMESPACE_MODE = { NEST | FLATTEN } ]
    [ CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER = '<string_literal>' ]
    [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
    [ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]
    [ ENABLE_DATA_COMPACTION = { TRUE | FALSE } ]
Restored database (from a snapshot)
CREATE DATABASE <name> FROM SNAPSHOT SET <snapshot_set> IDENTIFIER '<snapshot_id>'
標準的なデータベース(リストより)
CREATE DATABASE <name> FROM LISTING '<listing_global_name>'
共有データベース(共有から)
CREATE DATABASE <name> FROM SHARE <provider_account>.<share_name>
セカンダリデータベース(データベース複製)
CREATE DATABASE <name>
    AS REPLICA OF <account_identifier>.<primary_db_name>
    [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
バリアント構文¶
CREATE OR ALTER DATABASE¶
データベースがまだ存在しない場合は新規に作成し、存在する場合は既存のデータベースをステートメントで定義されたデータベースに変換します。CREATE OR ALTER DATABASE ステートメントは、 CREATE DATABASE ステートメントの構文ルールに従い、このステートメントには ALTER DATABASE ステートメントと同じ制限があります。
以下の変更がサポートされています。
- 以下のデータベースのプロパティとパラメーターの変更。 
詳細については、 CREATE OR ALTER DATABASE の使用上の注意 をご参照ください。
CREATE OR ALTER [ TRANSIENT ] DATABASE <name>
    [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
    [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
    [ EXTERNAL_VOLUME = <external_volume_name> ]
    [ CATALOG = <catalog_integration_name> ]
    [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
    [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
    [ LOG_LEVEL = '<log_level>' ]
    [ TRACE_LEVEL = '<trace_level>' ]
    [ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
    [ COMMENT = '<string_literal>' ]
CREATE DATABASE ... CLONE¶
同じパラメーター値で新しいデータベースを作成します。
CREATE [ OR REPLACE ] DATABASE [ IF NOT EXISTS ] <name> CLONE <source_database> [ ... ]
詳細については、 CREATE <オブジェクト> ... CLONE をご参照ください。
必須パラメーター¶
- name
- データベースの識別子を指定します。アカウントに対して一意である必要があります。 - また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: - "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。- 詳細については、 識別子の要件 をご参照ください。 - 重要 - データベースの複製とフェールオーバー のベストプラクティスとして、各セカンダリデータベースにプライマリデータベースと同じ名前を付けることをお勧めします。この方法では、ビュー内の完全修飾テーブル名のクエリなど、同じデータベース内の他のオブジェクトによる完全修飾オブジェクト(つまり、 - '<データベース>.<スキーマ>.<オブジェクト>')の参照をサポートします。- セカンダリデータベースの名前がプライマリデータベースと異なる場合、これらのオブジェクト参照はセカンダリデータベースで壊れます。 
Secure Data Sharingパラメーター¶
- provider_account.share_name
- データベースを作成する 共有 の識別子を指定します。文書化されているように、共有の名前は、共有を提供するアカウントの名前で完全に修飾されている必要があります。 
データベース複製のパラメーター¶
重要
このセクションでは、 アカウント複製機能 とは異なる、限定的なデータベース複製機能について説明します。Snowflakeは、データベースの複製とフェールオーバーにアカウント複製機能を使用することを強く推奨します。
- AS REPLICA OF account_identifier.primary_db_name
- レプリカ(つまり、セカンダリデータベース)を作成するプライマリデータベースの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合は、文字列全体を二重引用符で囲む必要があります。 - プライマリデータベースのアカウント識別子と名前が必要です。 - account_identifier
- プライマリデータベースを格納するアカウントの一意の識別子。優先識別子は - organization_name.account_nameです。組織で複製が有効になっているアカウントのリストを表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。- 従来のアカウントロケーターもアカウント識別子として使用できますが、将来的に機能しなくなる可能性があるため、使用しないことをお勧めします。アカウントロケーターをアカウント識別子として使用する方法の詳細については、 データベース複製の使用上の注意 をご参照ください。 
- primary_db_name
- プライマリデータベースの名前。ベストプラクティスとして、各セカンダリデータベースにプライマリデータベースと同じ名前を付けることをお勧めします。 
 - 注釈 - データベース複製とフェールオーバーのベストプラクティスとして、オプションのパラメーター DATA_RETENTION_TIME_IN_DAYS をセカンダリデータベースとプライマリデータベースで同じ値に設定することをお勧めします。 
スナップショットパラメーター¶
その FROMSNAPSHOTSET 句は、バックアップからデータベースを復元します。他のデータベースプロパティは、バックアップデータベースにあるものとすべて同じであるため、指定しません。
このフォームには CREATEORREPLACE 句がありません。通常は、新しい名前でデータベースを復元して、この新しいデータベースからデータまたはその他のオブジェクトを回復させるか、元のデータベースの名前を変更してから、元の名前でデータベースを復元します。
注釈
復元されたデータベースは、スナップショットの元のデータベースから独立しています。復元されたデータベースと元のデータベースの間にクローニング関係はありません。したがって、復元されたデータベース内のテーブルのすべてのマイクロパーティションは、そのデータベースによって所有されます。
新しく復元されたデータベースのバックアップを作成する場合は、そのデータベース用に新しいスナップショットセットを作成します。
スナップショットの詳細については、バックアップと不変ストレージのスナップショット をご参照ください。
- snapshot_set
- 特定のデータベース用に作成されたスナップショットセットの名前を指定します。SHOWSNAPSHOTSETS コマンドを使用して、適切なスナップショットセットを見つけることができます。 
- snapshot_id
- そのスナップショットセット内の特定のスナップショットの識別子を指定します。SHOWSNAPSHOTSINSNAPSHOTSET コマンドを使用して、スナップショットの作成日時に基づいて、スナップショットセット内で適切な識別子を見つけます。 
リスト パラメーター¶
- 'listing_global_name'
- データベースを作成するリストのグローバル名を指定します。それは以下の要件を満たしている必要があります。 - 有料リストは不可です。 
- リスト用語は、 - OFFLINE型でない場合、 Snowsight を使用して受け入れられる必要があります。
- リストデータ製品は、現在の地域で入手可能である必要があります。 - リストがローカルリージョンで利用可能かどうかは、 - is_ready_for_importの DESCRIBE AVAILABLE LISTING 列を見ることで判断できます。
 
リストからデータベースを作成するには、 IMPORT LISTING 権限が必要です。共有からデータベースを作成するには、 IMPORT SHARE 権限が必要です。
オプションのパラメーター¶
- TRANSIENT
- データベースを一時として指定します。一時的なデータベースにはFail-safe期間がないため、Time Travelを離れると追加のストレージコストは発生しません。ただし、これは、データが失われた場合にもFail-safeで保護されないことを意味します。詳細については、 Fail-safeの理解と表示 をご参照ください。 - さらに、定義上、一時データベースで作成されたすべてのスキーマ(および結果としてすべてのテーブル)は一時的です。一時テーブルの詳細については、 CREATE TABLE をご参照ください。 - デフォルト:値なし(つまり、データベースは永続的) 
- CLONE source_db
- 指定したソースデータベースのクローンを作成することを指定します。データベースのクローン作成の詳細については、 CREATE <オブジェクト> ... CLONE をご参照ください。 
- AT | BEFORE ( TIMESTAMP => timestamp | OFFSET => time_difference | STATEMENT => id )
- データベースのクローンを作成するとき、 AT | BEFORE 句は、Time Travelを使用して、過去の特定の時点またはそれ以前のデータベースをクローンすることを指定します。指定されたTime Travel時間がデータベースが作成された時点またはそれ以前の場合、クローン作成操作はエラーで失敗します。 
- IGNORE TABLES WITH INSUFFICIENT DATA RETENTION
- Time Travelでクローンに利用可能な履歴データがなくなったテーブルを無視します。AT | BEFORE 句で指定された過去の時間が、データベースまたはスキーマ内の子テーブルのデータ保持期間を超えている場合は、子テーブルのクローン作成操作をスキップします。詳細については、 子オブジェクトとデータ保持時間 をご参照ください。 
- IGNORE HYBRID TABLES
- 無視されたハイブリッド・テーブルはクローンされません。ハイブリッド・テーブルを含むデータベースをクローンするには、このオプションを使用します。クローンされたデータベースは他のオブジェクトを含みますが、ハイブリッド・テーブルはスキップします。 - このオプションを使用せず、データベースに1つ以上のハイブリッド・テーブルが含まれている場合、コマンドはハイブリッド・テーブルを無言で無視します。しかし、ハイブリッド・テーブルを含むデータベースのエラー処理は今後のリリースで変更される予定です。したがって、このパラメーターを先制的にコマンドに追加することもできます。 
- DATA_RETENTION_TIME_IN_DAYS = integer
- データベースでTime Travelアクション(CLONE および UNDROP)を実行できる日数を指定し、さらにデータベースで作成されたすべてのスキーマのデフォルトのTime Travel保持時間を指定します。詳細については、 Time Travelの理解と使用 をご参照ください。 - このオブジェクトレベルパラメーターの詳細な説明、およびオブジェクトパラメーターの詳細については、 パラメーター をご参照ください。 - 値: - Standard Edition: - 0または- 1
- Enterprise Edition: - 永続データベースの場合は - 0~- 90
- 一時データベースの場合は - 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
- Apache Iceberg™ テーブル に使用するデフォルト外部ボリュームを指定するオブジェクトパラメーター。 - このパラメーターの詳細については、 EXTERNAL_VOLUME をご参照ください。 
- CATALOG = catalog_integration_name
- Apache Iceberg™ テーブル に使用するデフォルトのカタログ統合を指定するオブジェクトパラメーター。 - このパラメーターの詳細については、 CATALOG をご参照ください。 
- REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }
- Icebergテーブル のクエリ結果で、無効な UTF -8文字をUnicode置換文字(�)で置き換えるかどうかを指定します。このパラメーターを設定できるのは、外部Icebergカタログを使用するテーブルのみです。 - TRUEの場合は、無効な UTF -8文字がUnicode置換文字に置き換えられます。
- FALSEの場合は、無効な UTF -8 文字は変更されません。Parquetデータファイルで無効な UTF -8 文字が検出された場合、Snowflakeはユーザーエラーメッセージを返します。
 - デフォルト: - FALSE
- DEFAULT_DDL_COLLATION = 'collation_specification'
- データベースに追加されたすべてのスキーマとテーブルのデフォルトの 照合仕様 を指定します。デフォルトは、スキーマおよび個々のテーブルレベルで上書きできます。 - パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。 
- LOG_LEVEL = 'log_level'
- インジェストされ、アクティブなイベントテーブルで使用できるようにするメッセージの重大度レベルを指定します。指定されたレベル(およびそれよりも重大なレベル)のメッセージがインジェストされます。 - レベルの詳細については、 LOG_LEVEL をご参照ください。ログレベルの設定については、 ロギング、メトリクス、トレースのレベル設定 をご参照ください。 
- TRACE_LEVEL = 'trace_level'
- トレースイベントがイベントテーブルにインジェストされる方法を制御します。 - レベルの詳細については、 TRACE_LEVEL をご参照ください。トレースレベルの設定については、 ロギング、メトリクス、トレースのレベル設定 をご参照ください。 
- STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }
- カタログとしてSnowflakeを使用する Apache Iceberg™ テーブル のストレージシリアル化ポリシーを指定します。 - COMPATIBLE:Snowflakeはデータファイルのエンコードと圧縮を実行し、サードパーティのコンピューティングエンジンとの相互運用性を確保します。
- OPTIMIZED:Snowflakeはデータファイルのエンコードと圧縮を実行し、Snowflake内で最高のテーブルパフォーマンスを実現します。
 - デフォルト: - OPTIMIZED
- COMMENT = 'string_literal'
- データベースのコメントを指定します。 - デフォルト: 値なし 
- CATALOG_SYNC = 'snowflake_open_catalog_integration_name'
- Snowflake Open Catalog 用に構成されたカタログ統合の名前を指定します。指定すると、Snowflakeはデータベース内のSnowflake管理の Apache Iceberg™ テーブルを Snowflake Open Catalog アカウントの外部カタログと同期します。Snowflake管理のIcebergテーブルとOpen Catalogの同期に関する情報については、 Snowflakeで管理されたテーブルを Snowflake Open Catalog と同期する をご参照ください。 - このパラメーターの詳細については、 CATALOG_SYNC をご参照ください。 - デフォルト: 値なし 
- CATALOG_SYNC_NAMESPACE_MODE = { NEST | FLATTEN }
- Snowflake Open Catalogで同期するデータベース内のSnowflake管理Icebergテーブルのカタログ同期名前空間モードを指定します。このプロパティは、Snowflakeが1つまたは2つの親名前空間を持つOpen Catalogにテーブルを同期するかどうかを指定します。 - CATALOG_SYNCパラメーターを設定している場合のみ適用されます。データベースを作成した後、このプロパティを変更することはできません。- NEST:Snowflakeは2つの親名前空間をテーブルと同期します。- 例えば、Snowflakeに - db2.public.table1Icebergテーブルが登録されているとします。このテーブルとその2つの親名前空間を、Open Catalogの- catalog2外部カタログに同期します。テーブルを2つの親名前空間と同期するには、- CATALOG_SYNC_NAMESPACE_MODE(- NEST)の既定値を使用します。- CATALOG_SYNC_NAMESPACE_MODEプロパティを指定しない場合、このプロパティのデフォルトである- NESTが適用されます。- CATALOG_SYNC_NAMESPACE_MODEにデフォルトを使用しているため、- CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITERを指定する必要はありません。その結果、Snowflakeは完全修飾名が- catalog2.db2.public.table1のテーブルをOpen Catalogに同期します。
- FLATTEN:Snowflakeは、- CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITERプロパティを使用して設定した区切り文字を含む、1つの親名前空間をテーブルに同期します。- 重要 - サードパーティのクエリエンジンが、カタログ内の2番目までの名前空間レベルにあるテーブルしかクエリできない場合は、 - CATALOG_SYNC_NAMESPACE_MODEプロパティを- FLATTENに設定する必要があります。そうしないと、SnowflakeはSnowflakeが管理するIcebergテーブルがOpen Catalogの3番目の名前空間レベルに同期され、テーブルをクエリできません。- 例えば、Snowflakeに - db1.public.table1Icebergテーブルが登録されているとします。このテーブルと、- db1-publicという名前の1つの親名前空間を、Open Catalog内の- catalog1外部カタログと同期させ、Open Catalog内の2番目の名前空間レベルにテーブルが配置されるようにします。- テーブルを - db1-publicの親名前空間と同期させるには、- CATALOG_SYNC_NAMESPACE_MODEを- FLATTENに設定トし、- CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITERの値としてハイフン(- -)を指定します。その結果、Snowflakeはこのテーブルを- catalog1.db1-public.table1という完全修飾名でOpen Catalogに同期します。
 - デフォルト: - NEST
- CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER = 'string_literal'
- Snowflakeがフラット化された名前空間に挿入する区切り文字を指定します。この名前空間はSnowflakeが管理するIcebergテーブルを1つの親名前空間を持つSnowflake Open CatalogにSnowflakeが同期する際に生成されます。この区切り文字のプロパティは、 CATALOG_SYNC_NAMESPACE_MODE プロパティを - FLATTENに設定した場合にのみ適用されます。Snowflakeは、異なるテーブルの親名前空間をフラット化することで発生する可能性のある競合を回避するために、この区切り文字を挿入します。データベースを作成した後、このプロパティを変更することはできません。- 例えば、 - customer.data.table1および- custom.erdata.table1のSnowflake管理Icebergテーブルを、Open Catalogの- catalog1外部カタログに同期したいとします。CATALOG_SYNC_NAMESPACE_MODE プロパティセットを- FLATTENに設定し、区切り文字にハイフン(- -)を指定することで、Snowflakeはこれらのテーブルを以下の完全修飾名を使用してOpen Catalogと同期します:- catalog1.customer-data.table1
- catalog1.custom-erdata.table1
 - CATALOG_SYNC_NAMESPACE_MODEプロパティを- FLATTENに設定する場合は、空でない区切り値が必要です。しかし、- CATALOG_SYNC_NAMESPACE_MODEプロパティを- NESTに設定すると、この区切り文字のプロパティは適用されず、構成値は無視されます。- 有効な文字: - 0-9、- A-Z、- a-z、- _、- $、- -
- TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
- タグ の名前とタグ文字列の値を指定します。 - タグ値は常に文字列であり、タグ値の最大文字数は256です。 - ステートメントでのタグの指定に関する情報については、 オブジェクトのタグクォータ をご参照ください。 
- WITH CONTACT ( purpose = contact [ , purpose = contact ...] )
- 新しいオブジェクトを1つ以上の 連絡先 に関連付けます。 
- ENABLE_DATA_COMPACTION = { TRUE | FALSE }
- SnowflakeがSnowflake管理:doc:`/user-guide/tables-iceberg`でデータ圧縮を有効にするかどうかを指定します。 - TRUE:Snowflakeはテーブルでデータ圧縮を実行します。
- FALSE:Snowflakeはテーブルでデータ圧縮を実行しません。
 - デフォルト: - TRUE- 詳細については、 ENABLE_DATA_COMPACTION および データ圧縮の設定 をご参照ください。 
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
| 権限 | オブジェクト | 注意 | 
|---|---|---|
| CREATE DATABASE | アカウント | 新しいデータベースを作成するために必要です。 Only the SYSADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed. | 
| USAGE | 外部ボリューム、カタログ統合 | 
 | 
| IMPORT LISTING | アカウント | リストからデータベースを作成します。 | 
| IMPORT SHARE | アカウント | 共有からデータベースを作成します。 | 
| MODIFY LOG LEVEL | アカウント | データベースの LOG_LEVEL を設定するために必要です。 | 
| MODIFY TRACE LEVEL | アカウント | データベースの TRACE_LEVEL を設定するために必要です。 | 
| OWNERSHIP | データベース | 既存のデータベースに対して CREATE OR ALTER DATABASE ステートメントを実行する場合にのみ必要です。 OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). | 
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
一般的な使用上の注意¶
- データベースを作成すると、現在のセッション用にアクティブ/現在のデータベースとして自動的に設定されます(データベースに対して USE DATABASE コマンドを使用するのと同等)。 
- 同じ名前のデータベースが既に存在する場合、エラーが返され、コマンドでオプションの - OR REPLACEキーワードが指定されていない限り、データベースは作成されません。- 重要 - OR REPLACEの使用は、既存のデータベースで DROP DATABASE を使用してから、同じ名前で新しいデータベースを作成することと同等です。ただし、ドロップされたデータベースは、システムから完全には削除 されません 。代わりに、Time Travel内で保持されます。Time Travelでドロップされたデータベースはアカウントのデータストレージに寄与するため、これは重要です。詳細については、 Time TravelおよびFail-safeのストレージコスト をご参照ください。
- OR REPLACEと- IF NOT EXISTS句は互いに排他的です。両方を同じステートメントで使うことはできません。
- CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。 
- 新しいデータベースを作成すると、データベースに2つのスキーマが自動的に作成されます。 - PUBLIC: データベースのデフォルトのスキーマ。 
- INFORMATION_SCHEMA: データベース内のオブジェクトに関するメタデータのクエリに使用できるビューとテーブル関数を含むスキーマ。アカウント内のすべてのオブジェクトにわたって使用できます。 
 
- 共有から作成されたデータベースは、次の点で標準データベースと異なります。 - これらのスキーマが共有に明示的に付与されていない限り、PUBLIC または INFORMATION_SCHEMA スキーマはありません。 
- それらは複製できません。 
- TRANSIENTや- DATA_RETENTION_TIME_IN_DAYSなどのプロパティは適用されません。
 
- データベースがアクティブ/現在の場合は、別のスキーマを使用するか、PUBLIC スキーマをドロップする場合を除き、PUBLIC スキーマもデフォルトでアクティブ/現在になります。 
- メタデータについて。 - 注意 - Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。 
CREATE OR ALTER DATABASE の使用上の注意¶
- ALTER DATABASE コマンドのすべての制限が適用されます。 
- このコマンドは、 CREATE DATABASE と ALTER DATABASE コマンドの間で重複するプロパティと構文をサポートしています。このため、以下はサポートして いません。 - SWAP WITH パラメーターを使用したデータベースの入れ替え。 
- RENAME TO パラメーターを使用したデータベースの名前変更。 
- CLONE パラメーターを使用したデータベースのクローン作成。 
- タグやポリシーの追加や変更。既存のタグとポリシーは保持されます。 
- TRANSIENT データベースの非 TRANSIENT データベースへの変換、またはその逆。 
- CREATE OR ALTER DATABASE ... FROM SHARE を使用した、共有からのデータベース作成。 
- CREATE OR ALTER DATABASE ... AS REPLICA OF を使用した、セカンダリ(レプリカ)データベースの作成。 
 
データベース複製の使用上の注意¶
重要
このセクションでは、 アカウント複製機能 とは異なる、限定的なデータベース複製機能について説明します。Snowflakeは、データベースの複製とフェールオーバーにアカウント複製機能を使用することを強く推奨します。
- データベースの複製では、独自の仮想ウェアハウスではなく、Snowflakeが提供する計算リソースを使用してオブジェクトとデータをコピーします。ただし、 STATEMENT_TIMEOUT_IN_SECONDS セッション/オブジェクトパラメーターは、ステートメントがキャンセルされるまでの実行時間を制御します。デフォルト値は - 172800(2日)です。プライマリデータベースの 初期複製 の完了には2日以上かかる場合があるため(データベースのメタデータの量とデータベースオブジェクトのデータの量に応じて異なります)、複製操作を実行するセッションの STATEMENT_TIMEOUT_IN_SECONDS 値を- 604800(最大値の7日)に増やします。- 同じセッションで - ALTER DATABASE secondary_db_name REFRESHステートメントを実行する前に、次の ALTER SESSION ステートメントを実行します。- ALTER SESSION SET STATEMENT_TIMEOUT_IN_SECONDS = 604800; - STATEMENT_TIMEOUT_IN_SECONDS パラメーターは、セッション内のアクティブなウェアハウスにも適用されることに注意してください。このパラメーターは、セッションレベルまたはウェアハウスレベルで設定された 低い 値を優先します。現在のセッションでアクティブなウェアハウスがある場合は、このウェアハウスの STATEMENT_TIMEOUT_IN_SECONDS も - 604800に設定します(ALTER WAREHOUSE を使用)。- 例: - -- determine the active warehouse in the current session (if any) SELECT CURRENT_WAREHOUSE(); +---------------------+ | CURRENT_WAREHOUSE() | |---------------------| | MY_WH | +---------------------+ -- change the STATEMENT_TIMEOUT_IN_SECONDS value for the active warehouse ALTER WAREHOUSE my_wh SET STATEMENT_TIMEOUT_IN_SECONDS = 604800; - 複製操作が完了した後、パラメーター値をデフォルトにリセットできます。 - ALTER WAREHOUSE my_wh UNSET STATEMENT_TIMEOUT_IN_SECONDS; 
- プライマリデータベースを格納するアカウントを識別する方法としては、組織名とアカウント名をアカウント識別子として使用することがお勧めです。代わりにレガシーアカウントロケーターを使用する場合は、 複製およびフェールオーバーのアカウント識別子 をご参照ください。 
- CREATE DATABASE ... AS REPLICA コマンドは、 WITH TAG 句をサポートしていません。 - セカンダリデータベースは読み取り専用であるため、この句はサポートされません。プライマリデータベースが WITH TAG 句を指定している場合は、セカンダリデータベースを作成する前に句を削除します。データベースに WITH TAG 句があるかどうかを確認するには、Snowflakeアカウントで GET_DDL 関数を呼び出し、関数の引数にプライマリデータベースを指定します。データベースにタグが設定されている場合、関数の出力には ALTER DATABASE ... SET TAG ステートメントが含まれます。 - 詳細については、 複製とタグ をご参照ください。 
例¶
データ保持期間が10日である2つの永続的なデータベースを作成します。
CREATE DATABASE mytestdb;
CREATE DATABASE mytestdb2 DATA_RETENTION_TIME_IN_DAYS = 10;
SHOW DATABASES LIKE 'my%';
+---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------+
| created_on                      | name       | is_default | is_current | origin | owner    | comment | options | retention_time |
|---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------|
| Tue, 17 Mar 2016 16:57:04 -0700 | MYTESTDB   | N          | N          |        | PUBLIC   |         |         | 1              |
| Tue, 17 Mar 2016 17:06:32 -0700 | MYTESTDB2  | N          | N          |        | PUBLIC   |         |         | 10             |
+---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------+
一時データベースを作成します。
CREATE TRANSIENT DATABASE mytransientdb;
SHOW DATABASES LIKE 'my%';
+---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------+
| created_on                      | name          | is_default | is_current | origin | owner    | comment | options   | retention_time |
|---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------|
| Tue, 17 Mar 2016 16:57:04 -0700 | MYTESTDB      | N          | N          |        | PUBLIC   |         |           | 1              |
| Tue, 17 Mar 2016 17:06:32 -0700 | MYTESTDB2     | N          | N          |        | PUBLIC   |         |           | 10             |
| Tue, 17 Mar 2015 17:07:51 -0700 | MYTRANSIENTDB | N          | N          |        | PUBLIC   |         | TRANSIENT | 1              |
+---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------+
アカウント ab67890 が提供する共有からデータベースを作成します。
CREATE DATABASE snow_sales FROM SHARE ab67890.sales_s;
共有からデータベースを作成する詳細な例については、 インポートされたデータの消費 をご参照ください。
データベース複製の例¶
重要
このセクションでは、 アカウント複製機能 とは異なる、限定的なデータベース複製機能について説明します。Snowflakeは、データベースの複製とフェールオーバーにアカウント複製機能を使用することを強く推奨します。
単一のデータベースをターゲットアカウントに複製するための複製グループの作成例については、 単一データベースを複製する をご参照ください。
CREATE OR ALTER DATABASE の例¶
簡単なデータベースを作成する¶
db1 という名前のデータベースを作成します。
CREATE OR ALTER DATABASE db1;
データベース db1 を変更し、 DATA_RETENTION_TIME_IN_DAYS と DEFAULT_DDL_COLLATION のパラメーターを設定します。
CREATE OR ALTER DATABASE db1
  DATA_RETENTION_TIME_IN_DAYS = 5
  DEFAULT_DDL_COLLATION = 'de';
以前にデータベースに設定されたパラメーターを解除する¶
変更されたデータベース定義に 以前に設定されたパラメーターがない 場合、そのパラメーターは設定解除されます。次の例では、前の例で作成したデータベース db1 の DATA_RETENTION_TIME_IN_DAYS パラメーターを設定解除します。
CREATE OR ALTER DATABASE db1
  DEFAULT_DDL_COLLATION = 'de';
代替インターフェイス¶
- Snowflake REST APIs 
- Snowflake Python APIs 
- Snowflake CLI - snow object create コマンド