[SQL] 집합 연산자

hyunsooSong·2022년 5월 22일
0

SQL

목록 보기
4/14
post-thumbnail

🚩 집합 연산자

  • UNION : 합집합, UNION ALL : 합집합+교집합, INTERSECT : 교집합, EXCEPT (MINUS) : 차집합

1. EXCEPT, 차집합

💡 차집합은 NOT IN과 NOT EXISTS로 대체하여 처리가 가능하다.

SELECT A.ID, B.ID
FROM A
EXCEPT
SELECT A.ID, B.ID
FROM B;

SELECT A.ID, B.ID
FROM A
WHERE NOT EXISTS (
    SELECT 'X'
    FROM B
    WHERE A.ID = B.ID AND B.ID = A.ID
);

2. INTERSECT, 교집합

  • 아래 두 개의 SQL의 결과는 같다.

SELECT X.ID, Y.ID
FROM (
     SELECT ID
     FROM A
     INTERSECT
     SELECT ID
     FROM B) X, Y
WHERE X.ID = Y.ID;

SELECT X.ID, Y.ID
FROM A
WHERE NOT EXISTS (
    SELECT 1
    FROM B (
         SELECT ID
         FROM A
         MINUS
         SELECT ID
         FROM B) Y
    WHERE X.ID = Y.ID;

3. UNION, 합집합

💡 UNION은 두 개의 집합을 교집합의 중복 없이 더하는 것을 말한다.

SELECT A.ID, B.ID
FROM A LEFT OUTER JOIN B ON A.ID = B.ID
UNION
SELECT A.ID, B.ID
FROM A RIGHT OUTER JOIN B ON A.ID = B.ID;

4. UNION ALL

💡 UNION ALL은 UNION과 달리 교집합의 관계없이 두 개의 집합을 더하는 것을 말한다.

  • '컬럼 ALAS'는 첫번째 SQL 모듈 기준으로 표시된다.
  • '정렬기준'은 마지막 SQL 모듈에 표시한다.

    SELECT A.ID, B.ID
    FROM A LEFT OUTER JOIN B ON A.ID = B.ID
    UNION ALL
    SELECT A.ID, B.ID
    FROM A RIGHT OUTER JOIN B ON A.ID = B.ID;

profile
🥕 개발 공부 중 🥕

0개의 댓글