본문 바로가기
DATABASE/Oracle

[Oracle] 테이블 정의서 만들기 - 쿼리로 추출하기

by DANEW 2024. 4. 2.

테이블 정의서 (Table Spec)

MsSQL 의 테이블 정의서를 만드는 내용을 저번 포스팅에서 다뤄보았는데, 오늘은 오라클에 대해서 조회해보도록 하자.

[MsSQL] 테이블 정의서 만들기 - 쿼리로 추출하기

 

테이블의 자세한 내용에 대해 설명 할 때 꼭 필요한 것이 테이블 정의서이다.

 

테이블의 존재하는 컬럼과 컬럼들의 Data Type 등을 기록하는 문서이며,

해당 문서를 통해 DBA에게 Table 생성을 요청하거나, 프로젝트 명세를 위해 내역을 첨부하는 등 필요가 많다.

 

보통은 DBA에게 요청하는 문서로 작성되어 오지만, 기존의 테이블의 정의를 확인하고 문서화 하기위해 정의서를 생성해 내야할 필요가 있다.

 

그럴 때 사용하기 적절한 쿼리에 대해 소개해보도록 하겠다.

Query

쿼리내용은 아래와 같다.

select a.table_name,
       b.comments as table_comment,
       c.column_name,
       nvl2(f.column_name, 'PK', null) as pk,
       c.data_type as column_type,
       case 
         when c.data_type = 'NUMBER' and c.data_scale > 0 
           then to_char(c.data_precision) || ',' || to_char(c.data_scale)
         when c.data_type = 'NUMBER' and c.data_precision > 0 and c.data_scale = 0 
           then to_char(c.data_precision)
         when c.data_type = 'NUMBER' and c.data_precision is null 
           then null
         when c.data_type = 'DATE' 
           then null
         else to_char(c.data_length)
        end as column_length,
       c.nullable as column_nullable,
       d.comments as column_comment
  from DBA_TABLES a
  left outer join DBA_TAB_COMMENTS b
    on a.owner = b.owner
   and a.table_name = b.table_name
  left outer join DBA_TAB_COLUMNS c
    on a.owner = c.owner
   and a.table_name = c.table_name
  left outer join DBA_COL_COMMENTS d
    on a.owner = d.owner
   and a.table_name = d.table_name
   and c.column_name = d.column_name
  left outer join DBA_CONSTRAINTS e
    on a.owner = e.owner
   and a.table_name = e.table_name
   and e.constraint_type = 'P'
  left outer join DBA_CONS_COLUMNS f
    on a.owner = f.owner
   and a.table_name = f.table_name
   and d.column_name = f.column_name
   and e.constraint_name = f.constraint_name
 where a.owner = '[OWNER Name]'
   and a.table_name = '[TABLE Name]'

 

where절에 원하는 테이블 소유 스키마와 테이블명을 입력하여 테이블 정의서를 추출 할 수 있다.

 

Table_Name : 테이블명

Table_Comment : 테이블 주석

Column_name : 컬럼명

Column_Type : 컬럼 타입

Column_Length :컬럽 타입의 길이

PK : Primary key

Column_Nullable : Null 가능 유무

Column_Comment : 컬럼 주석

 

기본적으로 필요한 내용을 추출한다.

 

반응형