합집합(UNION) 연산은 두 테이블의 데이터를 하나로 합칠 때 사용한다. 이때 두 테이블의 구조가 호환되어야 한다. 구체적으로 열(속성)의 개수가 같아야 하고, 각 열마다 대응되는 데이터의 종류(도메인)가 같아야 한다.
속성명이 서로 달라도 데이터의 종류가 같으면 합집합 연산이 가능하다. 반대로 열의 개수가 다르면 연산이 성립하지 않고, 개수가 같더라도 대응 열의 도메인이 다르면 연산이 불가능하다.
집합 연산 문제는 도메인 일치 여부를 가장 먼저 확인하는 것이 요령이다. 도메인이 맞고 개수가 맞는 관계를 골라내면 정답이 된다.
예제
합집합 문제는 조건을 뒤집어 놓는다. 열의 개수만 같으면 도메인이 달라도 된다고 하거나, 속성명이 달라야만 연산이 된다고 하면 틀린다. 도메인 불일치나 속성 개수 불일치를 정답으로 포장하는 선지도 함정이다. 속성 개수와 대응 속성의 도메인이 둘 다 같은 보기를 골라야 한다.
대표 기출 3문항
SQL문에서 HAVING을 사용할 수 있는 절은?
LIKE 절
WHERE 절
GROUP BY 절
ORDER BY 절
정답과 해설 보기
정답 ③ · SQL 구문에서 그룹화된 결과에 집계 조건을 부여할 때 HAVING 절과 짝을 이루는 절을 묻는 문제이다. HAVING 절은 GROUP BY 절을 통해 생성된 소그룹 집합에 대해 집계 함수를 이용한 조건을 적용할 때 사용된다.
HAVING 절은 GROUP BY로 그룹화된 결과를 필터링할 때 사용되며 WHERE 절 이후에 위치한다.
다음 중 SQL의 합집합 연산이 제대로 수행되는 경우는?
두 테이블의 속성 개수가 같고, 대응되는 각 속성들의 도메인이 같으나 속성명들이 다른 경우
두 테이블의 속성 개수가 같고, 대응되는 각 속성들의 도메인이 같으나 속성들의 도메인이 다른 경우
두 테이블의 속성 개수가 다르나, 대응되는 각 속성들의 도메인이 같으며 속성명들이 같은 경우
두 테이블의 속성 개수가 같으나 대응되는 각 속성들의 도메인이 다르고 속성명들이 다른 경우
정답과 해설 보기
정답 ① · SQL의 UNION 연산이 수행되기 위한 조건을 묻는 문제이다. 합집합 연산은 두 테이블의 속성 개수가 같고 대응되는 각 속성들의 도메인이 서로 같아야 수행할 수 있다.
SQL 합집합(UNION)은 두 집합의 속성 개수와 대응되는 도메인(데이터 타입)이 일치해야 한다.
키 값이 문자열 또는 숫자일 경우 일련의 키 값들에 대해 일부분이 같은 문자나 숫자로 구성되었을 때, 즉 전체 키 값의 길이보다 키 값들 사이에 별개의 전위(prefix) 수가 작을 때 적합하고, 가변 길이의 키 값을 효과적으로 나타낼 수 있으며, 삽입 및 삭제시 노드의 분열과 병합이 없는 특징을 가진 색인구조는?
B* - 트리 색인
트라이(trie)색인
B - 트리 색인
B+ - 트리 색인
정답과 해설 보기
정답 ② · 키 값의 전위(prefix) 공유, 가변 길이 처리, 노드 분열과 병합이 없다는 특징을 가진 색인 구조를 묻는 문제이다. 트라이(trie)는 키 값을 문자 또는 숫자 단위로 분해하여 노드를 구성하는 색인 구조로, 키들 사이에 공통 전위를 공유하므로 전위 수가 적은 키 집합에 적합하고 가변 길이 키를 효과적으로 표현할 수 있으며 삽입과 삭제 시 노드의 분열이나 병합이 발생하지 않는다.
트라이는 키의 문자 단위로 노드를 구성하여 전위 문자열을 효율적으로 처리하고 분할 없이 삽입/삭제한다.