SHOW SCHEMAS
SHOW SCHEMAS
액세스 권한이 있는 스키마(schema)를 나열하는 명령이에요. Time Travel 보존 기간 안에 있어 언드롭할 수 있는 드롭된 스키마도 포함해요. 현재/지정한 데이터베이스 또는 전체 계정의 스키마를 나열하는 데 사용할 수 있어요. 출력은 스키마 메타데이터와 속성을 데이터베이스와 스키마 이름 기준 사전순으로 반환해요. 제공된 필터로 결과를 필터링하려면 이 점을 유의해야 해요.
출처: 문서
본문
액세스 권한이 있는 스키마를 나열해요. 여기에는 Time Travel 보존 기간 안에 있어 언드롭할 수 있는 드롭된 스키마도 포함돼요. 이 명령을 사용해 현재/지정한 데이터베이스 또는 전체 계정의 스키마를 나열할 수 있어요. 출력은 스키마 메타데이터와 속성을 데이터베이스와 스키마 이름 기준 사전순으로 반환해요. 제공된 필터로 결과를 필터링하려면 이 점을 유의해야 해요.
구문
SHOW [ TERSE ] SCHEMAS
[ HISTORY ]
[ LIKE '<pattern>' ]
[ IN { ACCOUNT | DATABASE [ <db_name> ] | APPLICATION <application_name> | APPLICATION PACKAGE <application_package_name> } ]
[ STARTS WITH '<name_string>' ]
[ LIMIT <rows> [ FROM '<name_string>' ] ]
[ WITH PRIVILEGES <object_privilege> [ , <object_privilege> [ , ... ] ] ]
매개변수
TERSE
다음 컬럼만 포함하는 출력을 반환해요: created_on, name, kind, database_name, schema_name. kind와 schema_name은 스키마에는 kind가 적용되지 않고 schema_name이 name과 중복되므로 항상 NULL을 표시한다는 점에 주의해요. 기본값: 값 없음(모든 컬럼이 출력에 포함됨).
HISTORY
아직 퍼지되지 않은(즉 각자의 Time Travel 보존 기간 안에 있는) 드롭된 스키마를 포함해요. 드롭된 스키마의 버전이 여러 개 존재하면 각 버전에 대해 행을 표시해요. 출력에는 추가 dropped_on 컬럼도 포함되는데, 이 컬럼은 드롭된 스키마의 날짜와 타임스탬프, 활성 스키마의 NULL을 표시해요. 기본값: 값 없음(드롭된 스키마는 출력에 포함되지 않음).
LIKE 'pattern'
선택적으로 객체 이름으로 명령 출력을 필터링해요. 필터는 SQL 와일드카드 문자(%와 _)를 지원하며 대소문자를 구분하지 않는 패턴 매칭을 사용해요. 예를 들어 다음 패턴들은 같은 결과를 반환해요:
... LIKE '%testing%' ...
... LIKE '%TESTING%' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
IN { ACCOUNT | [ DATABASE ] [ db_name ] | APPLICATION application_name | APPLICATION PACKAGE application_package_name }
명령의 범위를 지정해요. 현재/지정한 데이터베이스 또는 전체 계정에 대한 레코드만 나열할지 결정해요. APPLICATION과 APPLICATION PACKAGE 키워드는 필수가 아니지만, 명명된 Snowflake Native App에 대한 범위를 지정해요. DATABASE 키워드는 필수가 아니에요. 데이터베이스 이름만 지정해도 범위를 설정할 수 있어요. 마찬가지로 세션이 현재 사용 중인 데이터베이스가 있으면 데이터베이스 이름도 필요하지 않아요.
기본값: 세션이 현재 사용 중인 데이터베이스가 있는지에 따라 달라져요:
- 데이터베이스가 있는 경우: DATABASE가 기본값이에요(즉 명령은 데이터베이스에서 볼 권한이 있는 객체를 반환).
- 데이터베이스가 없는 경우: ACCOUNT가 기본값이에요(즉 명령은 계정에서 볼 권한이 있는 객체를 반환).
STARTS WITH 'name_string'
선택적으로 객체 이름의 시작 부분에 나타나는 문자를 기준으로 명령 출력을 필터링해요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 예를 들어 다음 문자열들은 다른 결과를 반환해요:
... STARTS WITH 'B' ...
... STARTS WITH 'b' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
LIMIT
선택적으로 반환되는 최대 행 수를 제한하면서 결과의 "페이지 매김"도 가능하게 해요. 선택적 FROM 'name_string' 하위 절은 결과의 "커서" 역할을 해요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 전체 객체 이름을 포함할 필요는 없고 부분 이름도 지원돼요. 기본값: 값 없음(출력에 제한이 적용되지 않음).
참고:
FROM 'name_string'과STARTS WITH 'name_string'절을 모두 지원하는 SHOW 명령에서는 같은 문장에서 두 절을 모두 조합할 수 있어요. 그러나 두 조건이 모두 충족되어야 하며, 그렇지 않으면 서로 상쇄되어 결과가 반환되지 않아요. 또한 객체는 이름으로 사전순으로 반환되므로 FROM 'name_string'은 STARTS WITH 'name_string'이 반환한 행보다 사전순 값이 더 높은 행만 반환해요.
WITH PRIVILEGES object_privilege [ , object_privilege [ , ... ] ]
선택적으로 현재 사용자의 활성 역할이 객체에 대해 지정된 권한 목록의 모든 권한을 부여받은 객체로 행을 제한해요. 권한 목록에 CREATE <object> 권한이 포함되면, 명령은 보조 역할에 권한이 부여된 객체를 제외해요. 이는 기본 역할만 객체를 만들 권한이 있기 때문이에요. 자세한 내용은 기본 역할과 보조 역할을 통한 승인(Authorization through primary role and secondary roles)을 참고해요.
OBJECT_VISIBILITY
미리 보기(Preview) 기능 — 공개(Open): 모든 계정에서 사용할 수 있어요.
이 속성은 계정 내 객체의 발견 가능성(discoverability)을 제어해, 명시적 액세스 권한이 없는 사용자가 객체를 찾고 액세스를 요청할 수 있게 해요.
사용 메모
- 범위를 APPLICATION 또는 SNOWFLAKE라는 데이터베이스로 지정하면, owner 컬럼이
LOCAL이라는 스키마의 소유자로 SNOWFLAKE를 반환해요. 예를 들어:
SHOW SCHEMAS IN APPLICATION my_app;
SHOW SCHEMAS IN DATABASE SNOWFLAKE;
owner 컬럼은 다음을 반환해요:
+-----+-------+-----+-----------+-----+
| ... | name | ... | owner | ... |
+-----+-------+-----+-----------+-----+
| ... | LOCAL | ... | SNOWFLAKE | ... |
+-----+-------+-----+-----------+-----+
- 출력에는 모든 스키마에 대한
is_nested컬럼이 포함돼요. 카탈로그 연결(catalog-linked) 데이터베이스의 스키마의 경우, 이 컬럼은 해당 네임스페이스가 원격 카탈로그의 다른 네임스페이스 아래에 중첩되어 있는지 여부를 나타내요. 다른 모든 스키마의 경우 이 컬럼은 N을 반환해요. - 이 명령은 실행에 웨어하우스가 필요하지 않아요.
- 이 명령은 현재 사용자의 현재 역할에 액세스 권한이 하나 이상 부여된 객체만 반환해요.
MANAGE GRANTS액세스 권한은 보유자에게 계정의 모든 객체를 볼 수 있는 권한을 암묵적으로 부여해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할)와 보안 관리자(SECURITYADMIN 역할)만MANAGE GRANTS권한을 가져요.- 이 명령의 출력을 후처리하려면 파이프 연산자(
->>)나RESULT_SCAN함수를 사용할 수 있어요. 두 구성 모두 출력을 쿼리할 수 있는 결과 집합으로 취급해요. 예를 들어 SHOW 명령 출력에서 특정 컬럼을 선택하거나 행을 필터링할 수 있어요. - 출력 컬럼을 참조할 때는 큰따옴표로 묶은 식별자를 사용해요. 예를 들어
type출력 컬럼을 선택하려면SELECT "type"이라고 지정해요. SHOW 명령의 출력 컬럼 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해야 해요. LIMIT <rows>의 값은 10000을 초과할 수 없어요. LIMIT rows를 생략하면 결과 집합이 1만 행보다 크면 명령이 오류를 일으켜요. 1만 개를 초과하는 결과를 보려면 LIMIT rows를 포함하거나 Snowflake 정보 스키마의 해당 뷰를 쿼리해요.- HISTORY와 WITH PRIVILEGES 매개변수는 상호 배타적이에요. 같은 문장에서 둘 다 사용할 수 없어요.
예제
벌 권한이 있는 현재 데이터베이스 mytestdb의 모든 스키마 표시:
SHOW SCHEMAS;
+---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+-----------------+-------------------+
| created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | owner_role_type | object_visibility |
|---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+-----------------+-------------------+
| Fri, 13 May 2016 17:58:37 -0700 | INFORMATION_SCHEMA | N | N | MYTESTDB | | Views describing the contents of schemas in this database | | 1 | ROLE | NULL |
| Wed, 25 Feb 2015 16:16:54 -0800 | PUBLIC | N | Y | MYTESTDB | PUBLIC | | | 1 | ROLE | NULL |
+---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+-----------------+-------------------+
벌 권한이 있는 현재 데이터베이스 mytestdb의 모든 스키마(드롭된 것 포함) 표시(DROP SCHEMA 예제를 기반으로 함):
SHOW SCHEMAS HISTORY;
+---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+---------------------------------+-----------------+-------------------+
| created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | dropped_on | owner_role_type | object_visibility |
|---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+---------------------------------+-----------------+-------------------+
| Fri, 13 May 2016 17:59:50 -0700 | INFORMATION_SCHEMA | N | N | MYTESTDB | | Views describing the contents of schemas in this database | | 1 | NULL | | NULL |
| Wed, 25 Feb 2015 16:16:54 -0800 | PUBLIC | N | Y | MYTESTDB | PUBLIC | | | 1 | NULL | ROLE | NULL |
| Tue, 17 Mar 2015 16:42:29 -0700 | MYSCHEMA | N | N | MYTESTDB | PUBLIC | | | 1 | Fri, 13 May 2016 17:25:32 -0700 | ROLE | NULL |
+---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+---------------------------------+-----------------+-------------------+
my_db라는 카탈로그 연결 데이터베이스의 모든 스키마를 표시하고 is_nested 컬럼을 확인해요. ns1-ns1a 스키마는 최상위 네임스페이스 ns1 아래에 중첩된 네임스페이스에 해당해요:
SHOW SCHEMAS IN DATABASE my_db;
+---------------------------------+----------+------------+------------+---------------+-------+---------+---------+----------------+-----------+
| created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | is_nested |
|---------------------------------+----------+------------+------------+---------------+-------+---------+---------+----------------+-----------|
| Mon, 27 Jul 2026 10:12:03 -0700 | NS1 | N | N | MY_DB | | | | 1 | N |
| Mon, 27 Jul 2026 10:12:05 -0700 | NS1-NS1A | N | N | MY_DB | | | | 1 | Y |
+---------------------------------+----------+------------+------------+---------------+-------+---------+---------+----------------+-----------+
USAGE 권한이 부여된 현재 데이터베이스의 모든 스키마 표시:
SHOW SCHEMAS WITH PRIVILEGES USAGE;
+-------------------------------+----------------+------------+------------+-----------------------------------------------------------+--------------+---------+---------+----------------+-----------------+-------------------+
| created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | owner_role_type | object_visibility |
|-------------------------------+----------------+------------+------------+-----------------------------------------------------------+--------------+---------+---------+----------------+-----------------+-------------------+
| 2023-01-27 15:01:12.940 -0800 | PUBLIC | N | N | BOOKS_DB | DATA_ADMIN | | | 1 | ROLE | NULL |
| 2023-09-15 15:22:51.164 -0700 | PUBLIC | N | N | TEST_DB | ACCOUNTADMIN | | | 4 | ROLE | NULL |
| 2023-01-13 10:58:49.584 -0800 | ACCOUNT_USAGE | N | N | SNOWFLAKE | | | | 1 | | NULL |
+-------------------------------+----------------+------------+------------+-----------------------------------------------------------+--------------+---------+---------+----------------+-----------------+-------------------+