DROP DATABASE

시스템에서 데이터베이스를 제거합니다.

참고 항목:

CREATE DATABASE , ALTER DATABASE , DESCRIBE DATABASE , SHOW DATABASES , UNDROP 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_1policy_1 을 포함하고 policy_1database_1 에서만 사용됩니다. 그렇지 않으면 허상 참조 가 발생합니다.

  • 세션 정책 또는 비밀번호 정책이 사용자 또는 계정에 설정된 경우 DROP 작업이 실패합니다.

데이터베이스 복제 사용법 노트

  • 언제든지 보조 데이터베이스를 삭제할 수 있습니다. 데이터베이스 소유자(즉, 데이터베이스에 대한 OWNERSHIP 권한 역할)만 데이터베이스를 삭제할 수 있습니다.

  • 데이터베이스의 복제본(즉, 보조 데이터베이스)이 하나 이상 있는 경우 기본 데이터베이스를 삭제할 수 없습니다. 기본 데이터베이스를 삭제하려면 먼저 보조 데이터베이스를 승격하여 기본 데이터베이스로 사용하도록 한 후에 이전 기본 데이터베이스를 삭제합니다. 또는 기본 데이터베이스에 대한 모든 보조 데이터베이스를 삭제한 후 기본 데이터베이스를 삭제합니다.

    데이터베이스 소유자만 데이터베이스를 삭제할 수 있음에 유의하십시오.

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