본문 바로가기

데이터베이스

MySQL Join 기본

훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com

 

Join


Join
join 또는 결합 구문은 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것이다.
따라서 조인은 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다. 
-위키백과-

간단히 말해서 두 개 이상의 테이블을 합쳐서 하나의 테이블로 만드는 것입니다.



Join 개념, 종류


 

A와 B 두 테이블을 Join하겠다.
여기서 기준이 되는 테이블, 즉 A를 Driving table
합쳐지는 테이블, B를 Driven table 이라고 합니다.

-> 쉽게 생각해서 

그리고 Join은 '보통' 외래 키(링크)를 기준으로, 이루어집니다. (그렇지 않은 경우도 있습니다)

 

또한 Join 된 결과 테이블은, 두 테이블의 칼럼을 모두 포함하는 형태가 됩니다.


Join의 종류

 

Join의 종류에는 크게 두 가지가 있습니다.

  1. Inner Join
  2. Outer Join
    • left join
    • right join

이 둘은 '널 값을 허용하는가'의 기준으로 나뉜 것입니다.

Join 될 때, Driving table과 Driven table에서 FK를 기준으로 Join 하게 되는데요,

 

Inner Join에서는

어느 쪽이라도 null인 것은 허용하지 않고 record에서 제외하게 됩니다.

 

Outer Join에서

left join에서는 Driving table의 null값을 허용하고,

right join에서는 Driven table의 null값을 허용합니다.

 

여기서 '허용한다'라는 것은, null이더라도 합쳐진 table에 포함된다는 것입니다.


Join 간단 예제

select * from employees join dept_emp on employees.emp_no=dept_emp.emp_no limit 10;

 

join 종류 : inner join

Driving table : employees

Driven table : dept_emp

기준 FK : emp_no

 

join 간단예제

위처럼 왼쪽과 오른쪽 테이블이 합쳐진 결과를 볼 수 있습니다.

 

위처럼 나온 결과 테이블에 또 연산을 더하여, 원하는 값을 추려낼 수 있습니다.


중요 (위의 예제에 대해)

join 종류 : inner join

Driving table : employees

Driven table : dept_emp

기준 FK : emp_no

 

위의 예제에 대한 요약입니다.

 

inner join은

employees의 record 중 하나의 emp_no

혹은 dept_emp의 record 중 하나의 emp_no

어느 쪽이라도 null값이라면, record에 포함하지 않습니다.

 

outer join은

left join이라면 employees의 record 중 하나의 emp_no가 null이라 해도, 해당 record를 join 한 table에 포함합니다.

right join이라면 dept_emp의 record 중 하나의 emp_no가 null이라 해도, 해당 record를 join 한 table에 포함합니다.


 

'데이터베이스' 카테고리의 다른 글

MySQL DCL 예제  (0) 2021.04.07
MySQL DDL 예제  (0) 2021.04.07
MySQL 기본 명령어  (0) 2021.03.31
(MySQL) Selection연산 기본과 Index Performance  (0) 2021.03.24
키, 외래 키, 참조 무결성 제약 조건  (0) 2021.03.17