UNION, INTERSECT, EXCEPT
SQL을 실행하면서 여러 개의 결과를 합쳐 보여주기 위해 set operation을 실행하게 된다.
대표적인 set operation으로 UNION, INTERSECT, EXCEPT가 사용된다.
UNION은 | (or) 연산, INTERSECT는 & (and) 연산, EXCEPT는 - (minus) 연산을 나타낸다.
UNION
UNION 연산을 사용하면 SQL을 실행한 결과의 합집합을 구할 수 있다.
(SELECT course_id FROM section WHERE sem='Fall' AND year=2019)
UNION
(SELECT course_id FROM section WHERE sem='Spring' AND year=2020)
예를 들어 위 SQL은 2019 가을 학기와 2020 봄 학기에 열린 모든 과목의 course_id를 가져오는 SQL이다.
INTERSECT
INTERSECT 연산을 사용하면 SQL을 실행한 결과의 교집합을 구할 수 있다.
(SELECT course_id FROM section WHERE sem='Fall' AND year=2019)
INTERSECT
(SELECT course_id FROM section WHERE sem='Spring' AND year=2020)
마찬가지로 위 SQL은 2019 가을 학기와 2020 봄 학기에 모두 열린 과목의 course_id를 가져오는 SQL이다.
EXCEPT
EXCEPT 연산을 사용하면 SQL을 실행한 결과의 차집합을 구할 수 있다.
(SELECT course_id FROM section WHERE sem='Fall' AND year=2019)
EXCEPT
(SELECT course_id FROM section WHERE sem='Spring' AND year=2020)
위 SQL은 2019 가을 학기에 열린 과목 중 2020 봄 학기에 열리지 않은 과목의 course_id를 가져오는 SQL이다.
ALL
ALL 키워드를 set operation 뒤에 붙여주면 중복된 결과 값을 삭제하지 않고 나타내준다.
(SELECT course_id FROM section WHERE sem='Fall' AND year=2019)
UNION ALL
(SELECT course_id FROM section WHERE sem='Spring' AND year=2020)
예를 들어 위 SQL은 UNION한 결과와 같지만 두 학기에 모두 열린 과목은 두 번씩 나타나게 된다.
※ INTERSECT와 EXCEPT 연산을 MySQL에서 지원되지 않는 문법으로, INNER JOIN 을 이용해 직접 구현하여야 한다.
'Computer Science > Database' 카테고리의 다른 글
[SQL] AVG, MIN, MAX, SUM, COUNT, GROUP BY, HAVING (0) | 2020.06.15 |
---|---|
[SQL] OR, AND, NOT, IN, IS NULL (0) | 2020.06.15 |
[SQL] SELECT, AS, LIKE, ORDER BY (0) | 2020.06.12 |
[SQL] INSERT, UPDATE, DELETE (0) | 2020.06.09 |
[SQL] CREATE, ALTER, RENAME, DROP TABLE (0) | 2020.06.02 |