[Oracle] 집합 연산자 사용법과 VIEW

OPERATOR LIKE SET

Oracle 테이블을 집합이라고 생각했을 때, 레코드를 합치는 방법이 있다. Join 과 달리 컬럼명이 동일하지 않아도 컬럼 개수만 맞다면 합칠 수 있다.

UNION 연산자들은 다음과 같다.

  • UNION : 같은 행은 중복을 없앤다
  • MINUS : 좌측 테이블과 우측 테이블의 같은 부분을 제외한 좌측 테이블을 나타낸다
  • INTERSECT : 같은 부분만 나타낸다
  • UNION ALL : 같은 행도 중복을 허용한다

이 연산자들은 아래 예제 SQL문의 UNION 자리에 삽입되어 사용된다. 결과는 예상하는대로 나타날 것이다. 두 테이블만 아니라 계속해서 그 아래 연산자를 추가하는 것도 가능하다.

SELECT ID, NAME FROM MEMBER
UNION -- MINUS, INTERSECT, UNION ALL
SELECT WRITER_ID, NAME FROM NITICE
-- UNION SELECT WRITER_ID, NAME FROM COMMENT (중복으로 또 쓸 수 있음)

VIEW

위 과정에서 생성한 TABLE 을 여러 번 사용해야 할 때마다 반복된 쿼리를 수행하는 것은 가독성을 떨어트린다.

생성된 테이블을 하나로 관리할 수 있는 VIEW 라는 것이 존재한다.

아래와 같이 VIEW 를 만들면 이후에도 VIEW 이름만 명시하여 사용할 수 있다.

CREATE VIEW CUSTOM_VIEW
AS
-- 복잡한 쿼리 테이블

이러한 VIEW 는 사용자들에게 읽기 모드로 제공된다.

따라서 특정한 부분만 공개하고 보안적 요소를 보장하는 역할로도 사용된다.

ENCAPSULATION 개념과 비슷하다.

관련 내용으로 DATA DICTIONARY 가 있다.

데이터 딕셔너리는 ORACLE DBMS 관련된 데이터 베이스를 직접 보여주는 것 대신 VIEW 들을 제공한다.

이때, 뷰 테이블은 DBA_, ALL_, USER_ + 테이블 명 과 같은 Convention 을 가진다.

과거 Console 기반 개발자들은 이 정보들을 뒤져가면서 개발했다고 한다.

따봉…

Updated:

Leave a comment