예제로 익히는 SQL - 5회차

Suhyeon Lee·2024년 10월 10일
0

라이브 세션

목록 보기
5/37

JOIN의 세 번째 단계: 적절한 JOIN 방식 찾기

LEFT, RIGHT JOIN

LEFT JOIN의 간단한 예

  • 두 테이블에 where 절이 없을 때, 간단하게 JOIN 가능
# LEFT JOIN 작성법(기초편)
select 컬럼1, 컬럼2... 
from 테이블1 as 테이블명1
left join basic.theglory2 as 테이블명2   
on a.공통컬럼=b.공통컬럼
  • ’LEFT 를 기준으로 위쪽에 작성하는 테이블’
    • ==’LEFT에 위치해 있는 테이블’
    • ==’LEFT JOIN에서 기준이 되는 테이블’ 이
    • 기준이 되는 테이블은, 조인 조건을 만족해도/만족하지 못해도 모두 출력
  • ‘LEFT 를 기준으로 아래쪽에 작성하는 테이블’
    • ==’RIGHT 에 위치해 있는 테이블’
    • ==’LEFT JOIN 에서 조건에 따라 출력되는 테이블’
    • RIGHT에 위치한 테이블은, 조인 조건을 만족하는 경우 출력되며, 만족하지 못할 경우 NULL 값으로 출력

LEFT JOIN의 약간 복잡한 예(Subquery 사용)

앞선 INNER JOIN 의 복잡한 예를 통해, 서브쿼리를 사용한 조인의 활용을 보셨습니다.
서브쿼리1,2가 실행되고 LEFT 조인문이 실행됩니다. 그 다음, 맨 마지막 ON 절에 조건절을 넣어주시면, LEFT 에 위치한 데이터는 모두 출력되며, RIGHT 에 위치한 데이터는 조건을 만족할 경우 값을 출력하지만, 조건을 만족하지 못할경우, NULL 값을 출력합니다.

RIGHT JOIN(잘 사용하지 않아요)

  • ’RIGHT 를 기준으로 위쪽에 작성하는 테이블’

    • ==’LEFT에 위치해 있는 테이블’
    • ==’RIGHT JOIN 에서 조건에 따라 출력되는 테이블’
    • LEFT에 위치한 테이블은, 조인 조건을 만족하는 경우 출력되며, 만족하지 못할 경우 NULL 값으로 출력
  • ‘RIGHT 를 기준으로 아래쪽에 작성하는 테이블’

    • ==’RIGHT 에 위치해 있는 테이블’
    • ==’RIGHT JOIN 에서 기준이 되는 테이블’
    • 기준이 되는 테이블은, 조인 조건을 만족해도/만족하지 못해도 모두 출력
  • 두 테이블에 where 절이 없을 때, 간단하게 조인하실 수 있습니다.

# RIGHT JOIN 작성법(기초편)
select 컬럼1, 컬럼2... 
from 테이블1 as 테이블명1
right join 테이블2 as 테이블명2   
on a.공통컬럼=b.공통컬럼

FULL OUTER JOIN

  • 테이블의 모든 데이터를 보고 싶을 때 사용하는 JOIN
    (MySQL 환경에서는 FULL OUTER JOIN을 지원하지 않습니다.)
  • FULL OUTER JOIN = LEFT JOIN + RIGHT JOIN 으로 표현 가능
    • 이는 각각의 NULL 값을 출력해주는 것과 같고, 이러한 NULL 값들은 쿼리의 비용이슈를 야기할 수 있어 현업에서는 자주 사용하지 않습니다.
  • 기본 작성 방법
select 컬럼1, 컬럼2,...
from table1 left join table2
on a.공통컬럼=b.공통컬럼
union
select 컬럼1, 컬럼2,...
from table1 right join table2
on a.공통컬럼=b.공통컬럼

03. UNION vs. JOIN

  • 꼭 둘 중 하나만 써야 하나요? 아닙니다!

UNION과 JOIN은 자유롭게 사용 가능

  • SQL 구문 작성시, 필요에 따라 UNION 함수와 JOIN 함수 함께 사용
    • RDBMS를 통해 데이터들은 규칙성을 가지고 각각의 테이블에 저장되어 있음
    • 이러한 테이블들의 열을 맞춰 UNION을 하고, 결합된 데이터를 가지고 공통컬럼을 기반으로 JOIN을 할 수 있음
    • 또한 반대로 공통컬럼을 기준으로 JOIN을 하고, 결합된 데이터를 가지고 열을 맞추는
      UNION을 할 수 있음
    • 추출쿼리에 따라, 순서에 상관없이 사용이 가능
구분UNIONJOIN
결합방식- 수직결합(세로로)- 수평결합(가로로)
특징- SELECT 문은 같은 수의 열을 가져야 함- 각 테이블은 결합을 위해 공통컬럼을 반드시 1개 이상 가져야 함
- 각 SELECT 문의 열은 동일한 순서를 가져야 함- PK는 기본키라고 부르며, NULL일 수 없고, 유일한 값을 가짐. 테이블 당 하나의 기본키만 가질 수 있음
- FK는 외래키라고 부르며, 다른 테이블의 PK와 연결되는 컬럼을 의미 (즉, PK와 공통컬럼)
SELECT 컬럼1, 컬럼2
FROM TABLE A 
UNION (ALL)
SELECT 컬럼1, 컬럼2
FROM TABLE B
  • UNION: 결합한 결과에서 중복되는 행은 하나만 표시
  • UNION ALL: 결합한 결과에서 중복되는 행을 모두 표시
JOIN: TABLE A INNER JOIN TABLE B
ON A.공통컬럼=B.공통컬럼
  • 두 테이블에서 일치하는 값을 가진 행을 반환
LEFT JOIN: TABLE A LEFT JOIN TABLE B 
ON A.공통컬럼=B.공통컬럼

-왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 일치하는 항목이 없으면 오른쪽 테이블의 열에 대해 NULL 값이 출력됩니다.

RIGHT JOIN: TABLE A RIGHT JOIN TABLE B
ON A.공통컬럼=B.공통컬럼 
  • 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환합니다. 일치하는 항목이 없으면 왼쪽 테이블의 열에 대해 NULL 값이 출력됩니다.
FULL OUTER JOIN: LEFT JOIN + UNION + RIGHT JOIN
  • LEFT, RIGHT 의 모든 데이터를 출력합니다. 각각의 빈 값은 NULL 로 반환됩니다.
profile
2 B R 0 2 B

0개의 댓글

관련 채용 정보