집합연산자란?
집합연산자는 select 문을 여러 개 연결하여 작성하며 각 select 문의 조회 결과를 하나로 합치거나 분리할 수 있다.
집합연산자 사용 규칙
- select 문에서 기술한 열과 두 번째 select문에서 기술한 열은 왼쪽부터 순서대로 일대일로 대응하며, 열 개수와 데이터 타입이 일치해야 한다. 열의 순서가 다르거나 데이터 타입이 일치하지 않으면 오류가 발생
- select 문에 대한 연산은 위에서 아래로 수행.
- order by 절은 select 문의 맨 끝에 기술.
종류 |
설명 |
UNION |
select 문의 조회 결과의 합집합. 중복되는 행은 한 번만 출력 |
UNION ALL |
select 문의 조회 결과의 합집합. 중복되는 행도 그대로 출력 |
예제테이블 1 ( user )
index |
name |
level |
salary |
1 |
홍길동 |
3 |
600 |
2 |
고길동 |
5 |
300 |
3 |
아무개 |
3 |
200 |
4 |
루피 |
7 |
900 |
5 |
이기영 |
5 |
450 |
6 |
호빵맨 |
4 |
170 |
7 |
세균맨 |
4 |
1300 |
예제테이블 2 ( user2 )
index |
name |
level |
salary |
1 |
홍길동 |
1 |
600 |
2 |
고길동 |
2 |
300 |
3 |
아무개 |
1 |
200 |
4 |
루피 |
1 |
900 |
5 |
이기영 |
2 |
450 |
6 |
호빵맨 |
2 |
170 |
7 |
세균맨 |
3 |
1300 |
SELECT * FROM user
UNION
SELECT * FROM user2;
user1 테이블과 user2의 중복된 행이 합쳐졌지만 중복된 행은 한 번만 나온걸 확인할 수 있다. ( user2 의 6번과 7번 행 )
SELECT * FROM user
UNION ALL
SELECT * FROM user2;
UNION ALL 을 사용하면 중복된 행이 있어도 모두 출력한다.