2 분 소요

조인(JOIN)

두 개 이상의 테이블을 연결하여 데이터를 검색하고 결합하는 방법

이를 위해서는 적어도 하나의 공유 컬럼(또는 관계)이 있어야 합니다.

JOIN내부 조인, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN이 있습니다.

image

출저

내부 조인(INNER JOIN)

두 개의 테이블 사이에 공통된 속성(열)을 기반으로 데이터를 결합하는 방법

image

  • 공통되는 값만 뽑아오기 때문에 NULL값이 존재하지 않는다.
SELECT <열 목록>
FROM <첫 번째 테이블>
    INNER JOIN <두 번째 테이블>
    ON <조인 조건>
[WHERE 검색 조건]

외부 조인(OUTER JOIN)

두 개의 테이블 사이에 공통된 속성(열)을 기반으로 데이터를 결합하는 방법

image

  • 공통되는 값만 뽑아오기 때문에 NULL값이 존재하지 않는다.

왼쪽 아우터 조인(Left Outer Join 또는 Left Join)

왼쪽 테이블의 모든 값이 출력되는 조인

왼쪽 테이블의 모든 행을 포함하면서 오른쪽 테이블과 일치하는 행을 결합합니다. 오른쪽 테이블에 일치하는 값이 없더라도 왼쪽 테이블의 모든 행이 결과에 포함됩니다. 결과적으로, 왼쪽 테이블의 값은 반드시 결과에 나타나게 됩니다.

오른쪽 아우터 조인(Right Outer Join 또는 Right Join)

오른쪽 테이블의 모든 값이 출력되는 조인

왼쪽 테이블과 마찬가지로 오른쪽 테이블의 모든 행을 포함하면서 왼쪽 테이블과 일치하는 행을 결합합니다. 왼쪽 테이블에 일치하는 값이 없더라도 오른쪽 테이블의 모든 행이 결과에 포함됩니다.

풀 아우터 조인(Full Outer Join)

왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인

양쪽 테이블의 모든 행을 포함하면서 일치하는 행을 결합합니다. 따라서 결과에는 양쪽 테이블의 모든 값이 포함되며, 일치하지 않는 값들도 결과에 나타납니다.

image

출저

SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
    <LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
     ON <조인 조건>
[WHERE 검색 조건]

크로스 조인(CROSS JOIN)

한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능

image

SELECT *
FROM <첫 번째 테이블>
    CROSS JOIN <두 번째 테이블>

크로스 조인 주의사항

  1. 두 개의 테이블 간의 가능한 모든 조합을 생성해야 할 때
  2. 특정 조건을 적용하지 않고 두 테이블 간의 모든 가능한 조합을 확인해야 할 때
  3. 데이터의 테스트 또는 임시 결과를 생성할 때

셀프 조인(SELF JOIN)

하나의 테이블 내에서 행을 다른 행과 결합하는 것

image

SELECT <열 목록>
FROM <테이블> 별칭A
    INNER JOIN <테이블> 별칭B
[WHERE 검색 조건]


유니온(UNION)

두 개 이상의 SELECT 문의 결과 집합을 결합하는 작업

결과로 단일 결과 집합이 생성됩니다. 단, 컬럼의 개수가 같아야하고, 각 컬럼의 데이터타입이 같아야합니다.

UNIONUNION ALL 의 두 가지 유형의 UNION이 있습니다. UNION을 사용하여 얻은 결과에는 중복이 포함되지 않습니다. 반면에 UNION ALL을 사용하여 얻은 결과는 중복을 유지합니다.


SQL의 JOIN과 UNION의 차이점

1. 용도:

  • JOIN은 관련된 데이터를 결합하여 의미 있는 결과를 생성하기 위해 사용됩니다.
  • UNION은 서로 다른 데이터 집합을 결합하고 중복을 제거한 결과를 생성하기 위해 사용됩니다.

1. 연산 대상:

  • JOIN은 두 개 이상의 테이블 간의 데이터를 연결하고 결합합니다.
  • UNION은 두 개 이상의 SELECT 문의 결과 집합을 결합합니다.

2. 결과 형태:

  • JOIN은 연결된 테이블의 열을 사용하여 새로운 결과 테이블을 생성합니다.
  • UNION은 SELECT 문의 결과 집합을 결합하여 단일 결과 집합을 생성합니다.

3. 중복 행 처리:

  • JOIN은 중복된 행을 제거하지 않습니다. (특정 유형의 조인을 제외하고는)
  • UNION은 중복을 제거하고자 할 때 사용하며, UNION ALL은 중복을 제거하지 않습니다.

4. 컬럼 요구 사항:

  • JOIN은 관련된 테이블 간의 공유 컬럼이 필요합니다.
  • UNION은 결합하려는 SELECT 문의 컬럼 수와 데이터 유형이 일치해야 합니다.

5. 데이터의 관계:

  • JOIN은 관련된 데이터를 기반으로 데이터 간의 관계를 사용하여 결합합니다.
  • UNION은 주로 데이터가 서로 유사한 경우에 사용되며, 두 데이터 집합을 동일한 형태로 결합합니다.

6. 성능:

  • JOIN은 관련된 테이블 간의 연결 및 결합을 수행하므로 성능에 영향을 미칠 수 있습니다.
  • UNION은 두 개 이상의 결과 집합을 단순히 결합하는 작업이므로 성능에 대부분의 영향을 미치지 않습니다.

댓글남기기