우리는 앞서서 아주 간단하고 심플한 방식으로 '관계형 데이터베이스'에서의 용어 개념에 대해서 알아보았습니다. 100% 정확한 내용이라고 볼 수도 없고, 실무적인 내용은 아니지만 어설프게 사용하는 용어의 관념에 대해서 최소한의 정의를 진행한 것에 의의를 두시기 바랍니다.
이제부터는 '데이터베이스'의 관점에서 복수의 테이블을 다루는 방식, 그리고 그와 관련된 개념들에 대해서 살펴보겠습니다. 우선 하나의 테이블은 하나의 집합이라고 볼 수 있습니다.
위와 같은 '집합'이 있다고 보겠습니다. 벤다이어그램 상 원 안의 숫자는 요소가 됩니다. 이를 테이블로 구성하면 오른쪽과 같은 형태가 되는 것이죠. '요소'는 테이블에서 하나의 행(row)을 의미합니다. 그리고 그 행은 복수의 열(column)이 존재하게 됩니다. 이를 속성과 유사하다고 설명했었죠. 하나의 행에 넘버, 이름, 주소, 성별, 직급... 등 다양한 속성이 있겠지만 어쨌든 요소는 하나의 행을 의미하게 됩니다.
우리가 평소에 SELECT를 사용해서 원하는 몇 개의 행 데이터를 출력하는 경우가 있습니다. 이렇게 리턴된 결과 전체 역시도 새로운 하나의 '집합'이라고 생각하시면 됩니다.
○ 집합에서의 합집합 : UNION
간단한 중학생 수준의 합집합 개념을 다시 짚어봅시다. A = {1, 2, 5} 그리고 B = {5, 10, 11}이라는 두 개의 집합이 있다고 가정합니다. 여기서 합집합 A ∪ B는 무엇이 될까요? {1, 2, 5, 10, 11}이 됩니다. 당연한 이야기 같지만, 정확히는 5라는 요소는 두 가지가 존재합니다. A의 5와 B의 5죠. 하지만 우리가 익히 알다시피, 동일한 요소가 있는 집합의 합집합을 구할 때에는 중복을 제거합니다.
자, 이 기본 상식은 SQL에서 테이블을 다루기 때문에 다시 한번 주지한 내용입니다. 'A ∪ B'라는 개념은 SQL에서 'A UNION B'로 표현하게 됩니다. 이 UNION 명령어의 원칙에 대해서 차근차근 정리해 보겠습니다.
1. UNION은 SELECT sth FROM sth 형태의 집합의 합집합을 만든다.
2. 합집합을 위한 각각의 집합은 열 개수와 각 열의 이름은 다르더라도 데이터 타입이 동일해야 한다.
→ 애스터리스크(*)를 사용할 때는 완전히 동일해야 하지만, 특정 열만 지정해서 조건을 맞출수도 있다.
3. 합집합의 성질에 따라, '중복되는 값'은 제거된다.
기본적인 쿼리 사용 방식은 다음과 같습니다.
SELECT * FROM TABLE00
UNION
SELECT * FROM TABLE01
UNION
SELECT * FROM TABLE02
그럼 다음 아티클에서 실제 사용 사례를 확인해보도록 하겠습니다.
'Data Literacy > SQL' 카테고리의 다른 글
Chapter 3. 집합 연산자와 서브쿼리 - (2) UNION과 합집합 3 (0) | 2023.09.16 |
---|---|
Chapter 3. 집합 연산자와 서브쿼리 - (2) UNION과 합집합 2 (0) | 2023.09.05 |
Chapter 3. 집합 연산자와 서브쿼리 - (1) 관계형 데이터베이스의 정의 (0) | 2023.08.24 |
Chapter 2. JOIN을 이용한 데이터 조합 - (8) 그룹화 : GROUP BY & HAVING 5 [예제] (0) | 2023.08.10 |
Chapter 2. JOIN을 이용한 데이터 조합 - (8) 그룹화 : GROUP BY & HAVING 4 (0) | 2023.08.02 |