본문 바로가기
DB

JOIN 이란? JOIN의 종류

by 앙헬디마리아 2021. 5. 13.
728x90

 

조인이란 무엇이며 왜 필요한가 ? 

 

여러개로 나누어진 테이블에서 필요한 데이터만 보기 위해 즉, 하나로 합치기 위해 데이터베이스가 제공하는 기능이다. 

관계형 데이터베이스(RDB)에서는 데이터들이 한 곳에 모여있는 것이 아니라 정규화로 인해 분산되어 있다.

따라서 RDB에 내가 원하는 데이터를 추출할 때는 JOIN은 필수 기능중 하나이다.

 

  • 여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와 결과를 보여주는 기술
  • 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것
  • 서로 다른 테이블을 공통 컬럼을 기준으로 합치는 테이블의 단위 연산

 

조인의 종류 다이어그램

조인의 종류는 내부조인(inner join), 외부조인(outer join), 셀프조인(self join) 이 있으며 이 글에서 다뤄보는 것은

내부조인과 외부조인정도가 될 것이다.

 

가장먼저 내부조인부터 살펴보자.

 

1. 내부조인(INNER JOIN)

 

 

예를 들어 두개의 테이블이 있다고 가정하자.

 

https://codedragon.tistory.com/4362
https://codedragon.tistory.com/4362

 

이 두개의 테이블에서 부서번호를 기준으로 어느 부서의 어느사원인지 정보를 알려고한다.

 

//명시적
SELECT A.사원명, B.부서명
FROM 사원table A JOIN 부서table B
ON A.부서번호 = B.부서번호;


//암시적
SELECT A.사원명, B.부서명
FROM 사원table A , 부서table B
WHERE A.부서번호 = B.부서번호;

 

간단하게 다음의 쿼리를 통해 

 

https://codedragon.tistory.com/4362

다음과 같은 결과 테이블을 추출해 낼 수 있다.

 

 

 

2. 외부조인(OUTER JOIN)

외부조인은 왜 쓰이나.. 어떨때??

조인 조건에서 동일한 값이 없는 행도 반환활 때 사용하는 구문이다. 

 

예를들어 회원테이블A와 멤버쉽포인트테이블B가 있다고 가정해보자. 근데 A테이블에 있는 회원이 B테이블에는 없을수도있지만

회원테이블의 전체 통계가 필요할 때 사용한다. 

 

 

외부조인으로는 left outer join , right outer join, full outer join 3가지가 있다. 

 

 

2-1 왼쪽 외부 조인(LEFT OUTER JOIN = LEFT JOIN)

 

왼쪽외부조인은 테이블 A의 모든 데이터와 테이블 B와 매칭이 되는 레코드를 포함하는 조인이다.

즉 , 왼쪽 테이블을 중심으로 오른쪽의 테이블을 매치시킨다. 

 

왼쪽 테이블의 한개의 레코드에 여러개의 오른쪽 테이블 레코드가 일치할 경우 ?

-> 해당 왼쪽 레코드를 여러번 표시하게 된다.

-> 왼쪽은 무조건 표시하고, 매치되는 레코드가 오른쪽에 없으면 NULL을 표시한다.

 

 

글보다 사진으로 보는게 이해가 더 잘 가는것 같다.

 

 

여기서 n을 기준으로 left join을 하게 되면 어떤 결과가 나올 것인가..??

 

 

조인 결과 = table1의 모든 데이터 + table1과 table2 컬럼(n)과 매칭이 되는 데이터

 

SELECT *
FROM employees
LEFT OUTER JOIN departments
ON employees.dept_no = departments.dept_no;

 

 

2-2 오른쪽 외부 조인(RIGHT OUTER JOIN = RIGHT JOIN)

 

 

오른쪽 외부조인은 왼쪽과 상반되는 거라고 생각하면 된다.

 

오른쪽 테이블을 중심으로 왼쪽 테이블을 매치시킨다.

 

 

사진을 한번 보자.

 

결과는 ...

조인 결과 = table2의 모든 데이터 + table1과 table2 컬럼(n)과 매칭이 되는 데이터

 

SELECT *
FROM employees
RIGHT OUTER JOIN departments
ON employees.dept_no = departments.dept_no;

 

 

2-3 완전 외부 조인(FULL OUTER JOIN = FULL JOIN)

 

 

완전 외부 조인은 mysql에서는 명시적인 SQL 구문은 지원하지 않지만 , UNION을 사용해서 완전 외부 조인을 사용할 수 있다.

 

left , right의 경우는 그래도 하나의 테이블을 기준으로 데이터를 추출하지만

full의 경우는 두개다 포함되어 있는 데이터를 전부 가져온다.

 

 

 

조인 결과 - 왼쪽 외부 조인 + 오른쪽 외부 조인

 

 

SELECT *
FROM table1
  LEFT OUTER JOIN table2
    ON table1.n = table2.n
UNION
SELECT *
FROM table1
  RIGHT OUTER JOIN table2
    ON table1.n = table2.n;

 

 

 

 

 

참조


https://yoo-hyeok.tistory.com/98

 

[MySQL] Join 깔끔한 이해와 사용법

상단의 그림 정말 정리가 잘 되어 있습니다. 처음 접할 때 보고도 저게뭔가 싶었는데 초심자의 입장에서 이해하기 쉽도록 설명해보려합니다. 1. LEFT JOIN A, B 테이블 중에 A값의 전체와, A의 KEY 값

yoo-hyeok.tistory.com

https://advenoh.tistory.com/23

 

관계형 데이터베이스에서 조인(join)이란?

1.JOIN에 대한 기본 개념 관계형 데이터베이스에서는 중복 데이터를 피하기 위해서 데이터를 쪼개 여러 테이블로 나눠서 저장합니다. 이렇게 분리되어 저장된 데이터에서 원하는 결과를 다시 도

advenoh.tistory.com

 

728x90

'DB' 카테고리의 다른 글

클릭하우스(ClickHouse)란?  (2) 2021.07.24
MySQL 쿼리 동작원리(실행계획, 인덱스)  (0) 2021.06.10
Redis (레디스란?)  (0) 2021.06.01
엘라스틱서치란? (ElasticSearch)  (0) 2021.05.30