집합연산
합집합 (UNION, UNION ALL)
UNION은 테이블을 병합해주고 중복 행은 삭제한다. (DISTINCT)
UNION ALL은 테이블을 병합하고 중복 행을 삭제하지 않는다.
연습문제
질의 3-32. 대한민국에서 거주하는 고객의 이름과 도서를 주문한 고객의 이름을 보이시오.
SELECT name
FROM customer
WHERE address LIKE '대한민국%'
UNION
SELECT name
FROM customer
WHERE custid IN (SELECT custid FROM orders);
차집합 (MINUS)
* MySQL 에는 MINUS 연산자가 없으므로 NOT IN 연산자로 표시한다.
연습문제
[질의 3-32] 에서 MINUS 연산을 수행한 “대한민국에서 거주하는 고객의 이름에서 도서를 주문한 고객의 이름을 빼고 보이시오.”
SELECT name
FROM customer
WHERE address LIKE '대한민국%'
AND name NOT IN (SELECT name
FROM customer
WHERE custid IN (SELECT custid FROM orders));
교집합 (INTERSECT)
* MySQL에는 INTERSECT 연산자가 없으므로 WHERE절에 IN연산자를 사용해서 포함 여부를 추출한다.
연습문제
[질의 3-32]에서 INTERSECT 연산을 수행한 “대한민국에서 거주하는 고객 중 도서를 주문한 고객의 이름 보이시오.
SELECT name
FROM customer
WHERE address LIKE '대한민국%'
AND name IN (SELECT name
FROM customer
WHERE custid IN (SELECT custid FROM orders));
'Database > SQL' 카테고리의 다른 글
데이터를 가공해야 하는 이유? (0) | 2022.07.29 |
---|---|
데이터 정의어 (DDL) : CREATE문 (0) | 2022.07.28 |
Q3-31 : 상관 부속질의 (0) | 2022.07.28 |
부속질의 (0) | 2022.07.28 |
조인(JOIN) (0) | 2022.07.28 |