2. DBMS이야기/04. CUBRID

04. CUBRID 시스템 카탈로그 & SQL

OSSW(Open Source System SoftWare 2014. 10. 5. 22:17

오늘은 시스템 카탈로그 (딕셔너리 뷰)와 SQL에 대해 진행하겠습니다.


 스키마 정보를 보관한 시스템 테이블

 질의를 통한 스키마 정보 조회


 테이블 정보 : db_class

  - 주요 필드 : class_name, owner_name

 컬럼 정보 : db_attribute

  - 주요 필드 : class_name, attr_name, attr_type

 기타

db_vclass  (oracle의 view 개념)

db_index

db_index_key

db_trig       (oracle의 trigger)

db_partition

db_stored_procedure   (oracle의 dba_source)

db_auth     (oracle의 dba_tab_privs)


명칭이 약간씩 다릅니다.


다음은 SQL 입니다.  CURBID는 SQL-2 (SQL92) 표준을 사용하며,

예약어 사용시 “” 로 감싸주어야 합니다.


조건없는 수정 / 삭제 제한할 수 있는데, 실수를 많이 하는

1. where 절 없는 update, delete 수행 제한할 수 있으며,

2. 서비스 운영중 관리자 혹은 응용 실수로 인한 전체 데이터 수정, 삭제 제한을

   통한 서비스 안정화가 가능합니다.

반영하는 방법은 CUBRID 설정화일(cubrid.conf) 상의 설정값 조정합니다

  -> block_nowhere_statement=yes

이 후, CUBRID broker 재구동을 통한 설정 반영이 됩니다.


* 검색

   sub-query 지원

   where (a,b) in (select …)도 사용가능합니다.

* 연산자 (오라클과 동일)

   =, <>, >=, <=

   +, -, *, /, ||

* 집합 연산자

   UNION, UNION ALL,

   DIFFERENCE(오라클의 MINUS), INTERSECTION (오라클의 INTERSECT)

   양쪽 select 절 필드 타입이 동일해야 합니다. (casting 필요)

     - char union varchar  => varchar

     - int union numeric => numeric

* outer join

   left outer, right outer join  (오라클과 동일)

   select … from class1 a left outer join class2 b on a.name = b.name

   select … from class1 a, class2 b where a.name = b.name(+)

* group by

    select a, to_char(d, ‘YYYY/MM/DD”), count(*) from my_table

    group by a, to_char(d, ‘YYYY/MM/DD”)

* rownum

   검색 결과 레코드에 대한 일련 번호 부여

   order by, group by 실행 전에 rownum 부여

     select rownum, id from emp where rownum between 11 and 20

     select id from emp where rownum between 11 and 20 group by id

     select id from emp where inst_num() between 11 and 20 group by id

     select rownum, id from emp where rownum between 11 and 20 order by id

     select orderby_num(), id from emp order by id for order by num() between 11 and 20


다음 시간에는 실습한 테스트 결과를 공유할게요~ 좋은 밤 되세요~!

출처 : CUBRID 교육 메뉴얼                                                (by. 진준호 2014.10.05)