[SQL] DML 다중 테이블 검색문 - 집합 연산자

2023. 8. 31. 20:53DATA PROGRAMMING/SQL

SQL 집합 연산자에서는 수학에서 집합을 공부했다면, 쉽게 이해할수 있는 연산자이다. 하지만 수학에서의 집합과 사용 방법이나 특징에서 조금 더 숙지해야할 내용이 있는데 그 부분들을 정리해 보려고 한다.

 

SQL DML - 집합 연산자

 

UNION VS UNION ALL

기본적으로 둘 다 합집합 연산자이지만 차이점이 존재한다. 우선은 union은 합집합할 두 SELECT 문을 각각 정렬하고 중복된 데이터를 한 번 빼서 출력한다. 즉, 수학에서 우리가 알고 있는 합집합 연산에 가깝다.

 

반면에 union all은 중복된 집합을 한번 빼지 않는다. 그렇기에 합집합할 테이블을 각각 정렬할 필요도 없어진다.

 

 

UNION 연산 결과의 테이블 명과 정렬

SELECT email '이메일/고객', concat(firstName, ' ', lastName) '성명'
FROM s_employees
WHERE firstName like 'A%'
UNION

SELECT name, concat(contactFirstName,' ' ,contactLastName) '담당자 성명'
FROM s_customers
WHERE contactFirstName LIKE "A%"

ORDER BY 1

 

유니온 집합의 테이블 명은 첫번째 테이블 기준으로 정해지고, 정렬 순서를 정해주는 order by절 역시 첫번째 테이블을 기준으로 설정해주면 된다. 이런 기준이 잡혀있으니 서로 성질이 다른 테이블이라고 하더라도 union 연산이 가능하다.