10분MySQL - JOIN

김종하·2023년 8월 4일
0

데이터베이스

목록 보기
5/6

JOIN 이란 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다.

내부조인(inner join)

가장 일반적인 형태의 join 이다. 일반적으로 그냥 join 을 한다고 하면 inner join 을 한다고 생각하면 된다.

join 을 하기 위해서는 테이블이 일대다(1:n) 관계로 연결되어 있어야 한다.
1:n 관계로 연결되어 있다는 것은 1번 테이블의 구분자를 2번 테이블이 FK로 여러개 가질 수 있다는 것을 의미한다.
예를들어, 회원과 구매테이블이 있을 때 1번 회원이 여러가지 상품을 구매할 수 있다면 회원과 구매는 1:n 관계를 가지고 있다고 할 수 있다.

다음과 같은 쿼리로 inner join 을 할 수 있다.

SELECT < 목록> 
FROM <1번 테이블>
 INNER JOIN <2번 테이블> // INNER JOIN 대신 JOIN 이라 써도 INNER JOIN 된다.
 ON <조인될 조건> 
WHERE <검색 조건> // 생략가능

ex)
SELECT * 
FROM buy
 INNER JOIN member
 ON buy.member_id = member.member_id
WHERE buy.member_id = 'jaden'

별칭을 사용해서 쿼리를 간단하게 만들 수 있다.

ex)
SELECT * 
FROM buy b
 INNER JOIN member m
 ON b.member_id = m.member_id
WHERE b.member_id = 'jaden'

외부조인(outter join)

내부조인은 두 테이블에 모두 데이터가 있어야만 결과가 나오게 된다.
만약 한쪽에만 데이터가 있는 경우도 쿼리가 되어야 한다면 외부조인을 사용할 수 있다.

쿼리는 다음과 같다

SELECT < 목록>
FROM <1번 테이블> <-- LEFT 테이블
 <LEFT || RIGHT || FULL> OUTER JON <2번 테이블> <-- RIGHT 테이블
 ON <조인될 조건>
WHERE <검색조건> // 생략가능

ex)
SELECT m.member_id, m.member_name, b.product_name
FROM member m 
 LEFT OUTER JOIN buy b // LEFT OUTER JOIN 은 LEFT JOIN 으로 축약가능하다 
 ON m.member_id = b.member_id
ORDER BY m.member_id;

LEFT OUTER JOIN 의 의미는 LEFT 테이블의 내용은 모두 출력되어야 한다라는 의미이다. RIGHT OUTER JOIN 도 마찬가지로 RIGHT 테이블의 내용은 모두 출력된다.
FULL OUTER JOIN 은 왼쪽 및 오른쪽 테이블 어디든 한쪽에라도 데이터가 있다면 출력된다.

0개의 댓글