IT/DataBase

[DB2] 시스템 View 테이블 및 예제

원창연 2020. 12. 5. 22:59

※ View 테이블은 command로 조회하는 내용을 SQL로 조회 가능토록 함

 

ㅁ 권한/특권 관련 뷰

sysibmadm.privileges
sysibmadm.authorizationids
sysibmadm.objecttowners
syscat.dbauth
syscat.tabauth
syscat.colauth
syscat.indexauth
syscat.schemaauth
syscat.sequenceauth 

ㅁ 일반 정보

SYSCAT.CHECKS 점검제한조건
SYSCAT.COLUMNS 컬럼
SYSCAT.COLCHECKS 점검 제한 조건이 참조하는 컬럼
SYSCAT.KEYCOLUSE 키에서 사용되는 컬럼
SYSCAT.DATATYPES 데이터 유형
SYSCAT.FUNCPARMS 함수 매개변수 또는 함수의 결과
SYSCAT.REFERENCES 참조 제한 조건
SYSCAT.SCHEMATA 스키마
SYSCAT.TABCONST 테이블 제한 조건
SYSCAT.TABLES 테이블
SYSCAT.TRIGGERS 트리거
SYSCAT.FUNCTIONS 사용자 정의 함수
SYSCAT.VIEWS 뷰

▶ 테이블 인덱스 조회 예
SELECT TABNAME,INDNAME,COLNAMES,UNIQUERULE,INDEXTYPE
  FROM SYSCAT.INDEXES
  WHERE TABSCHEMA='CCS'   
    인덱스 조회 DESCRIBE INDEXES FOR TABLE table-name [show detail]
 
 
▶ 테이블 컬럼조회
  select TABNAME,COLNAME,TYPESCHEMA,LENGTH,NULLS,DEFAULT,REMARKS
  from SYSCAT.COLUMNS
  where TABSCHEMA ='CCS' --AND TABNAME = 'TBH001'
  ORDER BY TABNAME,COLNO
  
▶ 기타  예제
   SELECT *  FROM SYSIBM.SYSVERSIONS  : 버전확인
   SELECT *  FROMSYSIBM.SYSINDEXES    : INDEX 테이블 

※ COMMAND로 조회시 주의

※ ssh접속에서는 따옴표로 sql구분
   ex) $db2 "select * from SYSCAT.VIEWS" 

ㅁ 나만에 테이블 및 컬럼조회

▶ 테이블 목록조회
SELECT 
  BB.TABSCHEMA     AS 스키마
  ,aa.NAME         AS 테이블영문명 
  ,AA.REMARKS      AS 테이블한글명
  ,TYPE            AS 테이블타입
  ,''              AS 테이블구조  
  ,0               AS 레코드건수
FROM SYSIBM.SYSTABLES AA
 ,(  
   SELECT TYPESCHEMA
         ,TABSCHEMA
         ,TABNAME
     from SYSCAT.COLUMNS
     GROUP BY TYPESCHEMA , TABSCHEMA, TABNAME
   )   BB
WHERE (NAME    LIKE UPPER('${var}')
    OR REMARKS LIKE UPPER('${var}'))
 AND AA.TYPE = 'T'   
 AND AA.NAME = BB.TABNAME
 AND BB.TABSCHEMA LIKE  '${schema}%'
WITH UR; 

▶ 테이블 컬럼조회
SELECT 
      B.COLNO  AS  NO
     ,(CASE WHEN B.KEYSEQ='1' THEN 'Y' 
           ELSE ' ' END) AS PK
     ,B.NAME             AS 영문명
     ,B.REMARKS          AS 한글명
     ,NULLS              AS NULLYN
     ,B.COLTYPE          AS 데이터타입
     ,B.LENGTH           AS 자릿수
     ,B.SCALE            AS 소수점
    ,''                  AS 데이터
  FROM SYSIBM.SYSTABLES A
      ,SYSIBM.SYSCOLUMNS B
WHERE  (A.NAME    = UPPER('${var}')
    OR A.REMARKS =UPPER('${var}'))
 AND A.CREATOR = B.TBCREATOR
 AND A.NAME = B.TBNAME
 ORDER BY B.COLNO
 WITH UR