CREATE SCHEMA¶
현재 데이터베이스에서 새 스키마를 만듭니다.
또한, 이 명령을 사용하여 현재 상태 또는 과거의 특정 시간/시점에서(Time Travel 사용) 기존 스키마를 복제 할 수 있습니다. 스키마 복제에 대한 자세한 내용은 복제 고려 사항 을 참조하십시오.
- 참고 항목:
ALTER SCHEMA , DESCRIBE SCHEMA , DROP SCHEMA , SHOW SCHEMAS , UNDROP SCHEMA
구문¶
CREATE [ OR REPLACE ] [ TRANSIENT ] SCHEMA [ IF NOT EXISTS ] <name>
[ CLONE <source_schema>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ] ]
[ WITH MANAGED ACCESS ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ EXTERNAL_VOLUME = <external_volume_name> ]
[ CATALOG = <catalog_integration_name> ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
필수 매개 변수¶
name
스키마에 대한 식별자를 지정하며, 이는 스키마가 생성된 데이터베이스에 대해 고유한 식별자여야 합니다.
또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예:
"My object"
)로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
선택적 매개 변수¶
TRANSIENT
스키마를 일시적인 스키마로 지정합니다. 일시적 스키마는 Fail-safe 기간이 없으므로 Time Travel을 떠난 후에는 추가적인 저장 비용이 발생하지 않지만, 이는 데이터 손실이 발생할 경우 Fail-safe로 보호되지 않는다는 뜻이기도 합니다. 자세한 내용은 Fail-safe 이해 및 보기 섹션을 참조하십시오.
또한, 정의에 따라 일시적 스키마에서 생성된 모든 테이블은 일시적입니다. 일시적 테이블에 대한 자세한 내용은 CREATE TABLE 을 참조하십시오.
기본값: 값 없음(즉, 스키마가 영구적임)
CLONE source_schema
지정된 원본 스키마의 복제본을 만들도록 지정합니다. 스키마 복제에 대한 세부 정보는 CREATE <오브젝트> … CLONE 을 참조하십시오.
AT | BEFORE ( TIMESTAMP => timestamp | OFFSET => time_difference | STATEMENT => id )
스키마를 복제할 때 AT | BEFORE 절은 Time Travel을 사용하여 과거의 특정 시점 또는 그 이전의 스키마를 복제하도록 지정합니다.
WITH MANAGED ACCESS
관리되는 스키마를 지정합니다. 관리되는 액세스 스키마는 스키마 소유자와 함께 권한 관리를 중앙 집중화합니다.
일반 스키마에서 오브젝트의 소유자(즉, 오브젝트에 대한 OWNERSHIP 권한을 가진 역할)는 자신의 오브젝트에 대한 추가 권한을 다른 역할에 부여할 수 있습니다. 관리되는 스키마에서 스키마 소유자는 스키마의 오브젝트에 대해 향후의 권한 부여 를 포함한 모든 권한 부여를 관리합니다. 오브젝트 소유자는 오브젝트에 대한 OWNERSHIP 권한을 유지하지만, 스키마 소유자만이 오브젝트에 대한 권한 부여를 관리할 수 있습니다.
DATA_RETENTION_TIME_IN_DAYS = integer
스키마에서 Time Travel 작업(CLONE 및 UNDROP)을 수행할 수 있는 일수뿐 아니라, 스키마에서 생성된 모든 테이블의 기본 Time Travel 보존 시간도 지정합니다. 자세한 내용은 Time Travel 이해 및 사용하기 섹션을 참조하십시오.
이 오브젝트 수준 매개 변수에 대한 자세한 설명과 아울러 오브젝트 매개 변수에 대한 자세한 내용은 매개 변수 를 참조하십시오. 테이블 수준 보존 시간에 대한 자세한 내용은 CREATE TABLE 및 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
Iceberg 테이블 에 사용할 기본 외부 볼륨을 지정하는 오브젝트 매개 변수입니다.
이 매개 변수에 대한 자세한 내용은 EXTERNAL_VOLUME 를 참조하십시오.
CATALOG = catalog_integration_name
Iceberg 테이블 에 사용할 기본 카탈로그 통합을 지정하는 오브젝트 매개 변수입니다.
이 매개 변수에 대한 자세한 내용은 CATALOG 를 참조하십시오.
DEFAULT_DDL_COLLATION = 'collation_specification'
스키마에 추가된 모든 테이블에 대한 기본 데이터 정렬 사양 을 지정합니다. 개별 테이블 수준에서 기본값을 재정의할 수 있습니다.
이 매개 변수에 대한 자세한 내용은 DEFAULT_DDL_COLLATION 을 참조하십시오.
COMMENT = 'string_literal'
스키마에 대한 설명을 지정합니다.
기본값: 값 없음
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
태그 이름과 태그 문자열 값을 지정합니다.
태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.
문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE SCHEMA |
데이터베이스 |
일반 스키마와 관리되는 액세스 스키마를 모두 만들 수 있습니다. |
CREATE SCHEMA … CLONE … WITH MANAGED ACCESS |
선택 사항 |
필요한 권한은 원본 스키마가 관리되는지 또는 관리되지 않는지에 따라 다릅니다.
|
USAGE |
외부 볼륨, 카탈로그 통합 |
각각 |
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
스키마를 만들면 현재 세션의 활성/현재 스키마로 자동으로 설정됩니다(스키마에 USE SCHEMA 명령을 사용하는 것과 같음).
같은 이름의 스키마가 데이터베이스에 이미 있는 경우 명령에 선택적인
OR REPLACE
키워드를 지정하지 않는 한 오류가 반환되고 스키마가 생성되지 않습니다.중요
OR REPLACE
를 사용하는 것은 기존 스키마에서 DROP SCHEMA 를 사용한 다음 같은 이름을 가진 새 스키마를 만드는 것과 같습니다. 하지만 삭제된 스키마가 시스템에서 영구적으로 제거되는 것은 아닙니다. 대신, 삭제된 데이터베이스는 Time Travel에 보존됩니다. Time Travel에 있는 삭제된 스키마가 계정의 데이터 저장에 기여하므로 이는 중요한 점입니다. 자세한 내용은 Time Travel 및 Fail-safe 관련 저장소 요금 섹션을 참조하십시오.CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.
관리되는 액세스 스키마에서, 스키마 소유자는 포함된 오브젝트(예: 테이블 또는 뷰)에 대한 권한 부여를 관리하지만, 오브젝트에 대한 다른 권한(USAGE, SELECT, DROP 등)은 없습니다.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
영구 스키마 만들기:
CREATE SCHEMA myschema; SHOW SCHEMAS; +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+ | created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | |-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------| | 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N | N | MYDB | | Views describing the contents of schemas in this database | | 1 | | 2018-12-10 09:33:56.793 -0800 | MYSCHEMA | N | Y | MYDB | PUBLIC | | | 1 | | 2018-11-26 06:08:24.263 -0800 | PUBLIC | N | N | MYDB | PUBLIC | | | 1 | +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+
일시적 스키마 만들기:
CREATE TRANSIENT SCHEMA tschema; SHOW SCHEMAS; +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+ | created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | |-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------| | 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N | N | MYDB | | Views describing the contents of schemas in this database | | 1 | | 2018-12-10 09:33:56.793 -0800 | MYSCHEMA | N | Y | MYDB | PUBLIC | | | 1 | | 2018-11-26 06:08:24.263 -0800 | PUBLIC | N | N | MYDB | PUBLIC | | | 1 | | 2018-12-10 09:35:32.326 -0800 | TSCHEMA | N | Y | MYDB | PUBLIC | | TRANSIENT | 1 | +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+
관리되는 액세스 스키마 만들기:
CREATE SCHEMA mschema WITH MANAGED ACCESS; SHOW SCHEMAS; +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+ | created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | |-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------| | 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N | N | MYDB | | Views describing the contents of schemas in this database | | 1 | | 2018-12-10 09:36:47.738 -0800 | MSCHEMA | N | Y | MYDB | ROLE1 | | MANAGED ACCESS | 1 | | 2018-12-10 09:33:56.793 -0800 | MYSCHEMA | N | Y | MYDB | PUBLIC | | | 1 | | 2018-11-26 06:08:24.263 -0800 | PUBLIC | N | N | MYDB | PUBLIC | | | 1 | | 2018-12-10 09:35:32.326 -0800 | TSCHEMA | N | Y | MYDB | PUBLIC | | TRANSIENT | 1 | +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+