1. 집합 연산자 종류
이름 |
기능 |
UNION |
두 집합을 합친다.(중복 데이터 제거) |
UNION ALL |
두 집합을 합친다.(중복 데이터 모두 출력) |
INTERSECT |
두 집합 모두 가지는 데이터만 출력 |
EXCEPT |
앞 집합에서 뒷 집합을 제외한 결과 출력 |
-- SALE1 Table
CREATE TABLE SALE1
(
NAME VARCHAR(50)
, AMOUNT NUMERIC(15,2)
);
INSERT INTO SALE1
VALUES
('Mike', 150)
, ('Jon', 132)
, ('Mary', 100)
;
SELECT * FROM SALE1;
|
name |
amount |
0 |
Mike |
150.00 |
1 |
Jon |
132.00 |
2 |
Mary |
100.00 |
-- SALE2 Table
CREATE TABLE SALE2
(
NAME VARCHAR(50)
, AMOUNT NUMERIC(15,2)
);
INSERT INTO SALE2
VALUES
('Mike', 120)
, ('Jon', 142)
, ('Mary', 100)
;
SELECT * FROM SALE2;
|
name |
amount |
0 |
Mike |
120.00 |
1 |
Jon |
142.00 |
2 |
Mary |
100.00 |
2. UNION
- 두 집합을 합치며, 중복 데이터는 제거 된다.
- 중복 데이터인 Mary는 중복 제거 후 1건만 출력됨
SELECT * FROM SALE1
UNION
SELECT * FROM SALE2
|
name |
amount |
0 |
Jon |
132.00 |
1 |
Mary |
100.00 |
2 |
Mike |
120.00 |
3 |
Jon |
142.00 |
4 |
Mike |
150.00 |
3.UNION ALL
- 두 집합을 합치며, 중복 데이터도 모두 출력된다.
- 중복 데이터인 Mary도 2건 모두 출력
SELECT * FROM SALE1
UNION ALL
SELECT * FROM SALE2
|
name |
amount |
0 |
Mike |
150.00 |
1 |
Jon |
132.00 |
2 |
Mary |
100.00 |
3 |
Mike |
120.00 |
4 |
Jon |
142.00 |
5 |
Mary |
100.00 |
4.INTERSECT
- 두 집합 모두 가지는 데이터만 출력한다.
- 중복 데이터인 Mary만 출력
SELECT * FROM SALE1
INTERSECT
SELECT * FROM SALE2
|
name |
amount |
0 |
Mary |
100.00 |
5.EXCEPT
- 앞 집합에서 뒷 집합을 제외한 모든 데이터를 출력
- JON, MIKE, MARY에서 중복된 MARY만 제외 후 출력
SELECT * FROM SALE1
EXCEPT
SELECT * FROM SALE2
|
name |
amount |
0 |
Jon |
132.00 |
1 |
Mike |
150.00 |
# 참고