본문 바로가기

카테고리 없음

[Oracle] 오라클 테이블 정보 확인 쿼리

반응형

프로젝트 자주 쓰이게 될 테이블 정보 확인 쿼리입니다. 

이것저것 볼거 없이, 한방 쿼리로 구성되어 있습니다. 도움이 되셨으면 좋겠습니다.

SELECT C.COLUMN_ID      AS SEQ /* 테이블 컬럼 순서 */
      ,A.OWNER          
      ,A.TABLE_NAME     AS TABLE_ID /* 테이블 ID */
      ,B.COMMENTS       AS TABLE_NM /* 테이블 명 */
      ,C.COLUMN_NAME    AS COLUMN_ID /*컬럼 ID */
      ,D.COMMENTS       AS COLUMN_NM /*컬럼 명 */
      ,C.DATA_TYPE		/*컬럼 데이터 타입 */
      ,C.NULLABLE       /*컬럼 필수여부 */
      ,C.DEFAULT_LENGTH  AS LENGTH /*컬럼 길이 */
      ,C.DATA_DEFAULT   /*컬럼 기본값 */
      ,CASE WHEN E.CONSTRAINT_NAME IS NOT NULL THEN 'Y' END AS PK /*컬럼 키 여부 */
  FROM ALL_TABLES A
      ,ALL_TAB_COMMENTS B
      ,ALL_TAB_COLUMNS  C
      ,ALL_COL_COMMENTS D
      ,(
        SELECT A.OWNER, A.TABLE_NAME, A.CONSTRAINT_NAME, B.COLUMN_NAME
          FROM DBA_CONSTRAINTS  A
              ,ALL_CONS_COLUMNS B
         WHERE 1=1
           AND A.CONSTRAINT_TYPE='P'
           AND A.OWNER = B.OWNER
           AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
       ) E
 WHERE 1=1
   AND A.OWNER       = B.OWNER
   AND A.TABLE_NAME  = B.TABLE_NAME
   AND B.OWNER       = C.OWNER
   AND B.TABLE_NAME  = C.TABLE_NAME
   AND C.OWNER       = D.OWNER
   AND C.TABLE_NAME  = D.TABLE_NAME
   AND C.COLUMN_NAME = D.COLUMN_NAME
   AND D.OWNER       = E.OWNER(+)
   AND D.TABLE_NAME  = E.TABLE_NAME(+)
   AND D.COLUMN_NAME = E.COLUMN_NAME(+)
   
   /* 조건 */
   AND A.OWNER          = 'C11'			  /* 사용자 */
   AND A.TABLE_NAME 	= 'A1AT_SMS'	  /* 테이블 명 */
   AND D.COMMENTS LIKE '주민' || '%'		  /* 컬럼 이름 */
   AND C.COLUMN_NAME 	= 'BILL_SEND_YN'  /* 컬럼ID */
 ORDER BY C.COLUMN_ID
반응형