DROP DATABASE

システムからデータベースを削除します。

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

CREATE DATABASEALTER DATABASEDESCRIBE DATABASESHOW DATABASESUNDROP DATABASE

構文

DROP DATABASE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Copy

パラメーター

name

ドロップするデータベースの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

CASCADE | RESTRICT

データベース内のテーブルを参照する外部キーが存在する場合は、データベースをドロップできるかどうかを指定します。

  • CASCADE は、データベースおよびデータベース内のすべてのオブジェクトをドロップします。これには、他のテーブルの外部キーによって参照される主キー/一意キーを持つテーブルが含まれます。

  • RESTRICT は、既存の外部キー参照に関する警告を返し、データベースをドロップしません。

デフォルト: CASCADE

使用上の注意

  • データベースをドロップしても、システムから永久に削除されるわけではありません。ドロップされたデータベースのバージョンは、データベースの DATA_RETENTION_TIME_IN_DAYS パラメーターで指定された日数の間、 Time Travel に保持されます。

    1. Time Travelの保持期間内に、ドロップされたデータベースは UNDROP DATABASE コマンドを使用して復元できます。

    2. Time Travelの保持期間が終了すると、ドロップされたデータベースの次の状態は、永続的か一時的かによって異なります。

      • 永続的なデータベースが Fail-safe に移動します。Fail-safe(7日)では、ドロップされたデータベースを復元できますが、Snowflakeのみです。データベースがFail-safeのままになると、パージされます。

      • 一時データベースにはFail-safeがないため、Time Travelから外れるとパージされます。

    3. ドロップされたデータベースがパージされると、回復できません。再作成する必要があります。

  • 現在、データベースが削除されると、子スキーマまたはテーブルのデータ保持期間は、データベースの保持とは明示的に異なるように設定されている場合、尊重されません。子スキーマまたはテーブルは、データベースと同じ期間保持されます。これらの子オブジェクト(スキーマまたはテーブル)のデータ保持期間を尊重するには、データベースまたはスキーマを削除する に、明示的に削除します。

  • データベースをドロップした後、同じ名前のデータベースを作成すると、データベースの新しいバージョンが作成されます。以前のデータベースのドロップされたバージョンは、次の方法を使用して復元できます。

    1. データベースの現在のバージョンの名前を別の名前に変更します。

    2. UNDROP DATABASE コマンドを使用して、以前のバージョンを復元します。

  • ポリシーまたはタグがテーブルまたはビュー列にアタッチされている場合にデータベースを正常にドロップするには、ポリシーまたはタグがデータベースとスキーマ内で自己完結している必要があります。たとえば、 database_1 には policy_1 が含まれ、 policy_1database_1 でのみ使用されます。それ以外では、 ダングリング参照 が発生します。

  • ユーザーまたはアカウントにセッションポリシーまたはパスワードポリシーが設定されている場合、 DROP 操作は失敗します。

データベース複製の使用上の注意

  • セカンダリデータベースはいつでも削除できます。データベースを削除できるのは、データベース所有者(つまり、データベースに対する OWNERSHIP 権限を持つロール)のみです。

  • データベースの1つ以上のレプリカ(つまり、セカンダリデータベース)が存在する場合、プライマリデータベースは削除できません。プライマリデータベースを削除するには、まずセカンダリデータベースをプライマリデータベースとして昇格させてから、以前のプライマリデータベースを削除します。または、プライマリデータベースのセカンダリデータベースをすべて削除してから、プライマリデータベースを削除します。

    データベースを削除できるのはデータベース所有者のみであることに注意してください。

DROP DATABASE mytestdb2;

+---------------------------------+
| status                          |
|---------------------------------|
| MYTESTDB2 successfully dropped. |
+---------------------------------+

SHOW DATABASES LIKE 'mytestdb2';

+------------+------+------------+------------+--------+-------+---------+---------+----------------+
| created_on | name | is_default | is_current | origin | owner | comment | options | retention_time |
|------------+------+------------+------------+--------+-------+---------+---------+----------------|
+------------+------+------------+------------+--------+-------+---------+---------+----------------+

SHOW DATABASES HISTORY LIKE 'mytestdb2';

+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+
| created_on                      | name      | is_default | is_current | origin | owner  | comment | options | retention_time | dropped_on                      |
|---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------|
| Wed, 25 Feb 2015 16:16:54 -0800 | MYTESTDB2 | N          | N          |        | PUBLIC |         |         |              1 | Fri, 13 May 2016 17:35:09 -0700 |
+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+
Copy