강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
집합 연산자
조회 : 5,607  


집합 연산자
1. 집합 산술 연산자
SET, MULTISET, LIST(SEQUENCE) 타입에 대해 합집합, 차집합, 교집합을 구하기 위해서 각각 +, -, * 연산자를 사용할 수 있다.
다음 표에 연산자에 대한 용법이 요약되어 있다.
컬렉션 피연산자 집합 산술 연산자 컬렉션 피연산자 결과 컬렉션 타입
SET +
-
*
SET SET
SET +
-
*
MULTISET
LIST (SEQUENCE)
MULTISET
MULTISET +
-
*
SET
MULTISET
LIST (SEQUENCE)
MULTISET
LIST (SEQUENCE) + LIST (SEQUENCE) LIST (SEQUENCE)
LIST (SEQUENCE) + SET
MULTISET
MULTISET
LIST (SEQUENCE) -
*
SET
MULTISET
LIST (SEQUENCE)
MULTISET
합집합
+ 연산자는 두 개의 컬렉션의 모든 원소들을 합쳐서 하나의 컬렉션을 생성한다. 두 LIST를 + 연산자로 합치면 결과로 입력된 두 개의 LIST를 병합(concatenation)한 LIST가 반환된다. 입력한 LIST의 개별적인 순서는 변하지 않는다. + 연산자의 피연산자 모두가 같은 컬렉션 타입이면, 결과는 입력한 컬렉션 타입이 된다. 예를 들어, 두 개의 SET을 더할 경우 그 결과로는 SET가 반환되며, SET의 성격상 중복된 원소는 제거된다. 두 개의 MULTISET의 합집합을 구하면, 원소들이 순서대로 정렬된 MULTISET가 반환된다. 예를 들어, {1, 3, 4, 3} + {3, 5, 4} 수식은 {1, 3, 3, 3, 4, 4, 5}와 같은 MULTISET가 반환된다. + 연산에 서로 다른 두 컬렉션 타입이 주어지면, 두 피연산자 모두 MULTISET로 변환된 후 계산되며 결과로 MULTISET가 반환된다.
차집합
- 연산자는 하나의 컬렉션에 속한 원소 중에서 다른 컬렉션에 속하지 않은 원소만을 결정하는데 사용된다. 두 컬렉션간의 차집합을 계산할 때, - 연산자의 왼편에 있는 컬렉션에 속한 원소 중에서 오른쪽에 있는 컬렉션에 속하지 않은 원소들을 반환한다. 예를 들어, {1, 3, 4, 3} - {3, 5, 4} 수식은 {1, 3}과 같은 MULTISET를 반환한다. 두 피연산자 모두가 SET 타입인 경우에만 결과가 SET 타입이고, 그 외에는 MULTISET가 반환된다.
교집합
두 컬렉션 모두에 속한 원소들을 찾기 위해서 * 연산자를 사용한다. 두 컬렉션 피연산자가 모두 SET이면, 중복이 모두 제거된 SET 타입의 컬렉션이 결과로 반환된다. 이 경우를 제외한 나머지 피연산자 조합에 대해서는 결과로 MULTISET가 반환된다. 이 경우에 두 피연산자가 모두 계산 이전에 MULTISET로 변환되고 결과 역시 MULTISET가 반환된다. 예를 들어, {1, 3, 4, 3} * {3, 5, 4} 수식은 {3, 4}와 같은 MULTISET를 반환한다.
2. 타입 변환
컬렉션 타입에 대한 산술 연산은 다음과 같은 데이터 타입 변환 규칙을 따른다.
두 인자가 같은 타입이면, 변환은 필요 없고 인자의 타입과 같은 결과가 반환된다.
두 인자가 서로 다른 컬렉션 타입을 가지는 경우에는, 필요한 경우 두 인자 모두 MULTISET로 변환된다. 결과는 MULTISET이다.
3. 변수에 집합 데이터 값 할당
컬렉션 값을 변수에 할당하기 위해서는 외부 질의가 하나의 행만을 반환해야 한다.
다음은 컬렉션 값을 변수에 할당하는 방법을 나타내는 예제이다. 다음과 같이 외부 질의는 하나의 행만을 반환해야 한다.
SELECT SET(SELECT name
FROM people
WHERE ssn in {'1234', '5678'})
TO :"names"
FROM TABLE people;

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1622


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
큐브리드