데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과를 집합으로 출력해준다. 아래 그림은 JOIN
에 대해서 잘 설명해준다.
위 그림을 테이블 A, 아래 그림을 테이블 B라고 하자.
우리는 두 개의 테이블을 연결고리인 author_id
으로 JOIN
을 통해 두 개의 테이블을 합칠 수 있다. 그렇다면 우리는 다음과 같은 명령을 통해서 두 테이블을 결합시킬 수 있다.
SELECT ~~ FROM TABLE_A LEFT JOIN TABLE_B ON TABLE_A.KEY = TABLE_B.KEY
ON
절을 이용한 JOIN
표현법은 조건을 지정하는 방법으로 일반적인 모든 형태의 JOIN
을 표현할 수 있다.
INNER JOIN
은 조인 중 가장 많이 사용된다. 따라서 보통 JOIN
을 얘기할 때는 INNER JOIN
을 말하는 것이다. INNER JOIN
은 키가 일치하는 레코드만을 추출해서 출력해준다.
SELECT ~~ FROM TABLE_A INNER JOIN TABLE_B ON TABLE_A.KEY = TABLE_B.KEY
A값의 전체와, A의 KEY 값과 B KEY 값이 같은 결과를 리턴하도록 한다.
그렇다면 RIGHT JOIN은 B값의 전체와, A의 KEY 값과 B KEY 값이 같은 결과를 리턴하도록 해준다는 것을 알 수 있다.
이때 ON
절의 조건을 만족하지 않는 경우에는 첫 번째 테이블의 열 값은 그대로 가져오지만 해당 레코드의 두 번째 테이블의 열 값은 모두 NULL
로 표시된다.
INNER JOIN
은 양쪽 테이블에 모두 내용이 있는 경우에만 결과가 출력되었지만 OUTER JOIN
은 한쪽 테이블에만 내용이 있어도 결과가 출력된다. 자주 사용되지는 않지만 가끔 유용하게 사용되는 방식이다.
SELECT ~~ FROM TABLE_A LEFT OUTER JOIN TABLE_B ON TABLE_A.KEY = TABLE_B.KEY