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 명령을 사용하여 이전 버전을 복원합니다.
테이블을 삭제하기 전에 테이블을 참조하는 뷰가 없음 을 확인하십시오. 뷰에서 참조하는 테이블을 삭제하면 뷰가 무효화됩니다(즉, 뷰를 쿼리하면 “오브젝트가 없습니다” 오류가 반환됨).
테이블을 삭제하려면 테이블에 대한 소유권 권한을 가진 역할을 사용해야 합니다.
IF EXISTS
절이 지정되어 있고 대상 오브젝트가 존재하지 않으면 명령이 오류를 반환하지 않고 성공적으로 완료됩니다.
예¶
테이블 삭제하기:
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). | +------------------------------------------------------------+