집합 연산
합집합 UNION
차집합 MINUS : 오라클은 MINUS지만 SQL 표준에서는 EXCEPT를 사용한다.
교집합 INTERSECT
-- 차집합 예시
-- 도서를 주문하지 않은 고객의 이름을 보이시오.
SELECT NAME FROM CUSTOMER
MINUS
SELECT NAME FROM CUSTOMER
WHERE CUSTID IN (SELECT CUSTID FROM ORDERS);
EXISTS
원래 단어에서 의미하는 것과 같이 조건에 맞는 튜플이 존재하면 결과에 포함시킴. 즉 부속질의문의 어떤 행이 조건에 만족하면 참임. 반면 NOT EXIST는 부속질의문의 모든 행이 조건에 만족하지 않을 때만 참임
- 무조건 상관 질의로 사용함
- 그냥 두 테이블을 독립적으로 두고, 있는지 없는지 비교하면서 차이두기
- 카티션프로덕트에 비해 연산이 적다.
- IN은 서브쿼리의 데이터를 모두 비교하지만, EXISTS는 하나라도 있으면 결과에 포함시키고 리턴하기 때문에 데이터가 커질수록 성능이 좋음
- 테이블을 통째로 가지고 와서, 비교하기 때문에 같다 안같다의 조건이 필요 (WHERE 조건이 추가적으로 반드시 들어가야한다)
-- 주문이 있는 고객의 이름과 주소를 보이시오
SELECT NAME, ADDRESS
FROM CUSTOMER cs
WHERE EXISTS (SELECT * FROM ORDERS od
WHERE cs.custid = od.custid);
- NOT EXISTS
'데이터 엔지니어링 > 데이터베이스 및 운영체제' 카테고리의 다른 글
SQL - 뷰 (0) | 2023.03.24 |
---|---|
SQL SUBQUERY 사용규칙, WHERE 부속 질의 (0) | 2023.03.23 |
SQL 서브쿼리(부속질의) (1) | 2023.03.22 |
SQL_기초(JOIN) (0) | 2023.03.22 |
SQL 기초_SELECT문 (0) | 2023.03.22 |