Redshift : show table (DDL information, DDL 정보 출력, 테이블 정보 출력, table information, Data Definition Language)
SQL을 다루다보면 어떤 table의 정보가 필요한 경우가 있습니다.
여기서 말하는 정보란 table에 존재하는 column의 종류, column의 자료형(data type), column에 들어갈 수 있는 데이터의 최대 크기 등을 의미합니다.
이러한 정보들을 DDL(Data Definition Language, Data Description Language)이라고 합니다.
SQL에서 DDL이란 보통 table의 이름, table에 존재하는 column 종류, 각 column의 data type, column들이 수용할 수 있는 데이터의 최대 크기, distinct key, sort key 등 table의 특징에 관한 정보를 담은 내용을 의미합니다.
(더 자세하고 정확히 말하면 위 설명보다 더 상세한 정의가 필요하지만, 위 설명만 이해해도 크게 문제는 없습니다.)
Syntax
show table table_name;
Redshift 기준으로 table의 정보를 얻기 위해선 show table 을 이용하면 됩니다.
show table을 적고 그 뒤에 정보를 출력하고싶은 table 이름을 적으면 해당 table에 대한 DDL 정보를 나타내줍니다.
예시를 봅시다.
create table test_sch.test_table (
col1 bigint,
col2 varchar(60),
col3 date,
col4 timestamp
)
;
먼저 위 query를 실행시켜서 test_sch.test_table이라는 이름의 table을 만들어줍시다.
총 4개의 column이 있고 각 column에 대한 data type을 명시해줬습니다.
그러면 위 table의 DDL 정보를 출력해봅시다.
show table test_sch.test_table
;
-- Result
CREATE TABLE test_sch.test_table (
col1 bigint ENCODE az64,
col2 character varying(60) ENCODE lzo,
col3 date ENCODE az64,
col4 timestamp without time zone ENCODE az64
)
DISTSTYLE AUTO;
show table 구문을 이용해서 test_sch.test_table의 DDL 정보를 출력한 결과입니다.
결과를 보면 CREATE TABLE 구문 속에 4개의 column이 명시되어있고 각 column에 대한 정의가 나와있습니다.
각 column에 대한 정보를 부분별로 살펴봅시다.
- col1 bigint ENCODE az64,
col1은 column 이름을 의미합니다.
그리고 col1 오른쪽에 적힌 bigint는 col1의 data type이 bigint라는 의미이죠.
- col2 character varying(60) ENCODE lzo,
col2는 column 이름을 의미합니다.
그리고 col2 오른쪽에 적힌 character(문자)는 col2의 data type을 의미합니다.
또한 varying(60) 이라는 내용도 있는데 이것은 최대 길이를 의미합니다.
즉, 최대 60자의 character(문자) 데이터가 저장될 수 있다는 의미입니다.
위쪽에서 table을 생성할 때 col2의 data type을 varchar(60) 이라고 적었었습니다.
varchar는 varying character의 약자로서 이것이 그대로 반영되어 character varying(60) 라는 결과가 나온겁니다.
- col3 date ENCODE az64,
마찬가지로 col3 컬럼에 대한 정보가 나오고 col3의 data type은 date(날짜)입니다.
- col4 timestamp without time zone ENCODE az64
col4 컬럼에 대한 정보이며 col4 컬럼의 data type은 timestamp(날짜 + 시간 data type)입니다.
위 결과를 table을 생성한 구문과 비교해보면 table을 생성할 때 지정된 정보가 그대로 반영된 것을 알 수 있습니다.