본문 바로가기
PostgreSQL

PostgreSQL. 테이블 및 컬럼 정보 조회

by 쑤- IT, MySQL, MariaDB, DBeaver 2021. 8. 20.

-------------------------------------------------
---.PostgreSQL. 테이블 및 컬럼정보 조회
--------------------------------------------------
SELECT
    tbl.schemaname     스키마명
  , tbl.relname            테이블id
  , tbl_dec.description  테이블명
  , col.attname           컬럼명
  , col.attnum            컬럼순서
  , col_dec.description 컬럼설명
  , col_att.data_type    data_type
  , col_att.character_maximum_length max_len
  , col_att.is_nullable             null여부
  , col_att.column_default      default값
  , col_att.numeric_precision   num_len
  , col_att.datetime_precision  data_time
FROM
    (
    SELECT
    *
    FROM
          PG_STAT_USER_TABLES  ---  사용자 테이블
     WHERE
          1 = 1
          AND relname = '테이블id'
          AND schemaname = '스키마이름') tbl
LEFT JOIN PG_DESCRIPTION tbl_dec  --- 테이블 정보
ON
    tbl_dec.objsubid = 0
    AND tbl.relid = tbl_dec.objoid
LEFT JOIN PG_ATTRIBUTE col    --- 컬럼 
ON
    tbl.relid = col.ATTRELID
LEFT JOIN PG_DESCRIPTION col_dec  --- 컬럼 정보
ON
    col_dec.objsubid <> 0
    AND col_dec.objoid  = tbl.relid
    AND col_dec.objoid = col.attrelid
    AND col_dec.objsubid = col.attnum
LEFT JOIN INFORMATION_SCHEMA.COLUMNS col_att  --- data_type 정보
ON
    col_att.table_schema = tbl.schemaname
    AND col_att.table_name = tbl.relname
    AND col_att.column_name = col.attname
    AND col_att.ordinal_position = col.attnum
WHERE
    1 = 1
    AND col.attstattarget = '-1'
ORDER BY
    tbl.relname, col.attnum;

 

INFORMATION_SCHEMA.COLUMNS  : columns에는 데이터베이스의 모든 테이블 열에 대한 정보가 포함.

 

table_catalog 데이터베이스 이름
table_schema 스키마 이름
table_name 테이블 이름
column_name 열 이름
ordinal_position 테이블 내 열의 서수
column_default 열의 기본 표현식
is_nullable Null 허용 여부
data_type 데이터 타입.
character_maximum_length data_type이 문자 또는 비트 문자열 때, 최대 길이
character_octet_length data_type문자 일때,  데이터의 가능한 최대 길이(바이트). 
numeric_precision 테이터 타입이 숫자일 경우 정밀도.
numeric_precision_radix data_type이 숫자일경우
data_type숫자 유형을 식별하는 경우 이 열은 열의 값을 기준으로 표시 numeric_precision하고 numeric_scale표현합니다. 값은 2 또는 10입니다. 
numeric_scale data_type이 숫자일경우
소수점 오른쪽의 유효 자릿수를 나타냄
10진법(10진법) 또는 2진법(2진법)으로 표현할 수 있음.
datetime_precision data_type이 날짜, 시간, 타임스탬프 인 경우 사용.
interval_type 경우 data_type식별하는 간격 유형이 열은 간격이 열의 포함 필드 명세를 포함하고 예를 들어 YEAR TO MONTH, DAY TO SECOND등 어떠한 필드 제한이 지정되지 않은 경우 (즉, 간격은 모든 필드를 수용), 및 다른 데이터 타입, 이 필드는 null입니다.
interval_precision  
character_set_catalog
character_set_schema
character_set_name
collation_catalog 열의 데이터 정렬을 포함하는 데이터베이스의 이름(항상 현재 데이터베이스), 기본값 또는 열의 데이터 유형이 데이터 형식을 조합할 수 없는 경우 null
collation_schema 열의 데이터 정렬을 포함하는 스키마의 이름입니다. 기본값이거나 열의 데이터 유형이 데이터 형식이 아닌 경우 null입니다.
collation_name 열의 데이터 정렬 이름, 기본값인 경우 null 또는 열의 데이터 유형이 데이터 정렬 가능하지 않은 경우
domain_catalog 열에 도메인 유형이 있는 경우 도메인이 정의된 데이터베이스의 이름(항상 현재 데이터베이스), 그렇지 않으면 null입니다.
domain_schema 열에 도메인 유형이 있는 경우 도메인이 정의된 스키마의 이름, 그렇지 않으면 null입니다.
domain_name 열에 도메인 유형이 있으면 도메인 이름이고 그렇지 않으면 null입니다.
udt_catalog 열 데이터 유형(해당되는 경우 도메인의 기본 유형)이 정의된 데이터베이스의 이름(항상 현재 데이터베이스)
udt_schema 열 데이터 유형(해당되는 경우 도메인의 기본 유형)이 정의된 스키마의 이름
udt_name 열 데이터 유형의 이름(해당되는 경우 도메인의 기본 유형)
scope_catalog
scope_schema
scope_name
maximum_cardinality default : Null
dtd_identifier 테이블에 속한 데이터 유형 설명자 중에서 고유한 열의 데이터 유형 설명자의 식별자입니다. 이는 이러한 식별자의 다른 인스턴스와 결합하는 데 주로 유용합니다. (식별자의 특정 형식은 정의되지 않았으며 향후 버전에서도 동일하게 유지되지 않을 수 있습니다.)
is_self_referencing PostgreSQL 에서 사용할 수 없는 기능에 적용됩니다.
is_identity 열이 ID 열이면 YES, else NO.
identity_generation 열이 ID 열인 경우 열의 정의를 반영하는 ALWAYS또는 BY DEFAULT입니다.
identity_start 열이 식별 열이면 내부 시퀀스의 시작 값이고 그렇지 않으면 null입니다.
identity_increment 열이 ID 열이면 내부 시퀀스의 증분이고 그렇지 않으면 null입니다.
identity_maximum 열이 식별 열이면 내부 시퀀스의 최대값이고 그렇지 않으면 null입니다.
identity_minimum 열이 식별 열이면 내부 시퀀스의 최소값이고 그렇지 않으면 null입니다.
identity_cycle 열이 식별 열 YES이면 내부 시퀀스가 ​​순환하거나 순환 NO하지 않는 경우입니다. 그렇지 않으면 null입니다.
is_generated  
generation_expression
is_updatable 업데이트 가능 여부

https://www.postgresql.org/docs/11/infoschema-columns.html

댓글