포함 연산자

설명

포함 연산자는 집합 값들을 비교하는데 사용된다. 예를 들어, 동질의 또는 이질의 도메인을 가지는 집합 값 속성을 포함 연산자를 이용하여 특정 집합 값과 비교할 수 있다.

부질의 결과를 비교 집합으로 사용할 수 있다. 집합 값이 아닌 속성으로부터 집합 값을 만들어 내기 위해서는, SET(subquery)과 같이 부질의에 적절한 집합 타입 키워드를 붙여야 한다. 부질의 내의 속성이 집합 값 속성이면, 집합 타입 키워드 없이 일반 부질의 구문을 그대로 사용할 수 있다. 다만, 이 경우에 부질의는 그 결과로 하나의 집합만을 반환해야 한다.

구문

collection_operand  containment_operator  collection_operand

collection_operand:
set
multiset
sequence(또는 list)
NULL

containment_operator:
SETEQ
SETNEQ
SUPERSET
SUBSET
SUPERSETEQ
SUBSETEQ

집합 포함 수식의 피연산자들이 서로 다른 컬렉션 타입이면, 두 컬렉션 모두 연산 적용 전에 MULTISET으로 변환된다.

포함 연산자는 두 개의 수식으로부터 또는 하나의 수식과 하나의 부질의로부터 생성된 두 개의 SET 또는 MULTISET을 비교하는데 사용된다. 이때, 수식은 하나의 집합 값 속성(SET-valued attribute)이거나, 집합 연산자(SET operator)를 지닌 산술 수식(arithmetic expression)이거나, 중괄호로 둘러싸인 상수 값 리스트로 표현된 집합이다. SETEQSETNEQSET, MULTISET, SEQUENCE(또는 LIST)에 대해서 모두 사용할 수 있으며, SUPERSET, SUPERSETEQ, SUBSET, SUBSETEQSETMULTISET에 대해서만 사용할 수 있다. 부질의가 비교에 포함되는 경우에는, 해당 부질의는 하나의 집합 값 속성만을 조회해야 한다.

요소의 타입이 오브젝트인 경우 오브젝트의 내용이 아닌 객체 식별자(OID)에 대해 비교한다. 예를 들어, 같은 속성 값을 가지는, OID가 다른 두 오브젝트는 서로 다른 것으로 간주된다.

수식 내의 피연산자 가운데 하나라도 NULL이 포함되면, 결과 역시 NULL이 반환된다.

포함 연산자를 설명하기 위해 다음의 테이블과 데이터가 생성되어 있다고 가정한다.

create table city (city_name varchar(30) primary key, sports set varchar(20));
insert into city values ('Seoul', {'baseball','basketball','golf', 'bowling', 'soccer'});
insert into city values ('Busan', {'baseball','basketball','soccer','scuba'});
insert into city values ('Daejeon', {'baseball','soccer'});
insert into city values ('Gwangju', {'baseball','soccer','basketball'});
insert into city values ('Incheon', {'baseball','basketball','golf'});
insert into city values ('Suwon', {'soccer','basketball'});
insert into city values ('Anyang', {'soccer'});
insert into city values ('Pyongchang', {'ski','snowboard'});
insert into city values ('Jeju', {'tennis','golf','scuba'});
insert into city values ('Cheonan', {});