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'
내부조인은 두 테이블에 모두 데이터가 있어야만 결과가 나오게 된다.
만약 한쪽에만 데이터가 있는 경우도 쿼리가 되어야 한다면 외부조인을 사용할 수 있다.
쿼리는 다음과 같다
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 은 왼쪽 및 오른쪽 테이블 어디든 한쪽에라도 데이터가 있다면 출력된다.