SQL/Oracle

[Oracle] 테이블/컬럼 목록 산출 SQL

나비:D 2007. 12. 5. 15:28

select *
from
(

SELECT ALL_TAB_COMMENTS.TABLE_NAME,  
         ALL_TAB_COMMENTS.COMMENTS 
    FROM ALL_TAB_COMMENTS 
   WHERE ( ALL_TAB_COMMENTS.OWNER = 'SCOTT' )
ORDER BY  ALL_TAB_COMMENTS.COMMENTS  , ALL_TAB_COMMENTS.TABLE_NAME
) a,

(

SELECT A.TABLE_NAME,  
       A.COLUMN_NAME,  
       A.COMMENTS  ,
   B.COLUMN_ID ID,
   A.COMMENTS||'  '||DECODE(C.CONSTRAINT_NAME,NULL,'','PK') PNAME,
      DECODE(C.CONSTRAINT_NAME,NULL,'','PK') PK
FROM   ALL_COL_COMMENTS A ,
       ALL_TAB_COLUMNS B ,      
(SELECT t.CONSTRAINT_NAME ,  s.TABLE_NAME , s.COLUMN_NAME
FROM
(SELECT CONSTRAINT_NAME
     FROM   ALL_CONSTRAINTS
     WHERE    CONSTRAINT_TYPE = 'P' ) t ,
(SELECT  CONSTRAINT_NAME ,
         TABLE_NAME,COLUMN_NAME
FROM    ALL_CONS_COLUMNS  ) s
WHERE t.CONSTRAINT_NAME = s.CONSTRAINT_NAME ) C
WHERE  ( A.OWNER = B.OWNER ) AND
       ( A.TABLE_NAME = B.TABLE_NAME ) AND
       ( A.COLUMN_NAME = B.COLUMN_NAME ) AND
   A.TABLE_NAME = C.TABLE_NAME(+)  AND
       A.COLUMN_NAME = C.COLUMN_NAME(+)
ORDER BY A.TABLE_NAME,B.COLUMN_ID
) b

where  a.TABLE_NAME = b.TABLE_NAME