Database/SQL

집합연산

2022. 7. 28. 03:18

집합연산


합집합 (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