Oracle Column PK FK 조회 쿼리

2019.03.18 18:32database/oracle

oracle column pk fk 조회

 

oracle 에서 column 정보를 조회하는 방법이다.


필요한 경우가 많아서 기록해 둔다.


해당 쿼리에서는 column 명과 더불어 comments, pk, fk 여부 등 부가적인 정보도 조회한다.


해당 쿼리를 사용하기 위해서는 먼저 owner, table 명이 필요하다.




 

쿼리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  SELECT AA.COLUMN_ID,
         AA.COLUMN_NAME,
         BB.COMMENTS,
         AA.DATA_TYPE,
         AA.DATA_DEFAULT,
         CC.PK,
         AA.NULLABLE,
         CC.FK
    FROM ALL_TAB_COLUMNS@AIDP AA,
         ALL_COL_COMMENTS@AIDP BB,
         (SELECT A.OWNER,
                 A.TABLE_NAME,
                 A.CONSTRAINT_TYPE,
                 COLUMN_NAME,
                 POSITION,
                 CASE WHEN A.CONSTRAINT_TYPE = 'P' THEN 'Y' END AS PK,
                 CASE WHEN A.CONSTRAINT_TYPE = 'R' THEN 'Y' END AS FK
            FROM ALL_CONSTRAINTS@AIDP A, ALL_CONS_COLUMNS@AIDP B
           WHERE     UPPER (A.OWNER) = UPPER ('owner')
                 AND A.TABLE_NAME = UPPER ('table_name')
                 AND A.TABLE_NAME = B.TABLE_NAME
                  AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
                 AND A.CONSTRAINT_TYPE IN ('P''F')) CC
   WHERE     UPPER (AA.OWNER) = UPPER ('owner')
         AND UPPER (AA.TABLE_NAME) = UPPER ('table_name')
         AND AA.OWNER = BB.OWNER
         AND AA.TABLE_NAME = BB.TABLE_NAME
         AND AA.COLUMN_NAME = BB.COLUMN_NAME
         AND AA.OWNER = CC.OWNER(+)
         AND AA.TABLE_NAME = CC.TABLE_NAME(+)
         AND AA.COLUMN_NAME = CC.COLUMN_NAME(+)
ORDER BY COLUMN_ID
cs





결과

column_id : 컬럼 ID

column_name :  컬럼명

comments : 코멘트

data_type : 컬럼 데이터 타입

data_default : 컬럼 기본값

pk : pk 여부 (Y or N)

nullable : null 가능 여부

fk : fk 여부 (Y or N)