DROP TABLE¶
현재/지정된 스키마에서 테이블을 제거하지만, UNDROP TABLE 을 사용하여 복구할 수 있도록 테이블 버전을 유지합니다. 자세한 내용은 이 항목에 있는 사용법 노트 섹션을 참조하십시오.
- 참고 항목:
CREATE TABLE , ALTER TABLE , SHOW TABLES , TRUNCATE TABLE , DESCRIBE TABLE
구문¶
DROP TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
매개 변수¶
name
삭제할 테이블의 식별자를 지정합니다. 식별자에 공백, 특수 문자 또는 대/소문자가 혼합된 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다(예:
"My Object"
).테이블 식별자가 (
db_name.schema_name.table_name
또는schema_name.table_name
형식으로) 정규화되지 않은 경우 이 명령은 세션의 현재 스키마에서 테이블을 찾습니다.CASCADE | RESTRICT
테이블을 참조하는 외래 키가 있는 경우 테이블을 삭제할 수 있는지 여부를 지정합니다.
CASCADE
는 테이블에 다른 테이블의 외래 키가 참조하는 기본/고유 키가 있더라도 테이블을 삭제합니다.RESTRICT
는 기존 외래 키 참조에 대한 경고를 반환하고 테이블을 삭제하지 않습니다.
기본값:
CASCADE
사용법 노트¶
테이블을 삭제해도 시스템에서 영구적으로 제거되지는 않습니다. 삭제된 테이블의 버전은 테이블에 대한 데이터 보존 기간 으로 지정된 일수 동안 Time Travel 에 보존됩니다.
Time Travel 보존 기간 이내에, UNDROP TABLE 명령을 사용하여 삭제된 테이블을 복원할 수 있습니다.
테이블이 삭제된 후 계정이나 상위 오브젝트(즉, 데이터베이스 또는 스키마)에 대한 Time Travel 보존 기간을 변경해도 삭제된 테이블의 Time Travel 보존 기간은 변경되지 않습니다. 자세한 내용은 Time Travel 항목의 참고 사항 을 참조하십시오.
Time Travel 보존 기간이 끝날 때, 삭제된 테이블의 다음 상태는 이 스키마가 영구적, 일시적 또는 임시적인지에 따라 달라집니다.
영구 테이블은 Fail-safe 로 이동합니다. Fail-safe(7일)에서는 삭제된 테이블을 복구할 수 있지만, Snowflake에서만 가능합니다. 테이블이 Fail-safe 상태를 벗어나면 제거됩니다.
일시적 테이블 또는 임시 테이블은 Fail-safe가 없으므로, Time Travel에서 벗어날 때 제거됩니다.
참고
장시간 실행 중인 Time Travel 쿼리가 있으면 이 쿼리가 완료될 때까지 계정의 모든 데이터와 오브젝트(테이블, 스키마, 데이터베이스)가 Fail-safe로 이동하는 과정이 지연됩니다. 임시 테이블과 일시적 테이블의 제거도 비슷하게 지연됩니다.
삭제된 테이블은 제거된 후에는 복구할 수 없으며, 다시 만들어야 합니다.
테이블을 삭제한 후, 같은 이름의 테이블을 만들면 새 버전의 테이블이 생성됩니다. 이전 테이블의 삭제된 버전은 여전히 다음 방법을 사용해 복원할 수 있습니다.
현재 버전의 테이블 이름을 다른 이름으로 바꿉니다.
UNDROP TABLE 명령을 사용하여 이전 버전을 복원합니다.
테이블을 삭제하기 전에 테이블을 참조하는 뷰가 없음 을 확인하십시오. 뷰에서 참조하는 테이블을 삭제하면 뷰가 무효화됩니다(즉, 뷰를 쿼리하면 “오브젝트가 없습니다” 오류가 반환됨).
테이블을 삭제하려면 테이블에 대한 소유권 권한을 가진 역할을 사용해야 합니다.
예¶
테이블 삭제하기:
SHOW TABLES LIKE 't2%'; +---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | |---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+ | Tue, 17 Mar 2015 16:48:16 -0700 | T2 | TESTDB | PUBLIC | TABLE | | | 5 | 4096 | PUBLIC | 1 | +---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+ DROP TABLE t2; +--------------------------+ | status | |--------------------------| | T2 successfully dropped. | +--------------------------+ SHOW TABLES LIKE 't2%'; +------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | |------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------| +------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+
테이블을 다시 삭제하되, 테이블이 없을 경우 오류를 발생시키지 않기:
DROP TABLE IF EXISTS t2; +------------------------------------------------------------+ | status | |------------------------------------------------------------| | Drop statement executed successfully (T2 already dropped). | +------------------------------------------------------------+