본문 바로가기
개발

[MySQL] 테이블 결합하기(JOIN)

by 솜씨제이 2018. 8. 1.

여러 개의 테이블을 특정 키로 결합하는 것을 테이블 참조, 조인식이라고 한다.

SELECT t1.name, t2.salary
  FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name;

MySQL에서는 JOIN, INNER JOIN, CROSS JOIN은 동일하다. 표준 SQL에서는 ON 구문에서는 INNER JOIN을 사용하고 다른 경우는 CROSS JOIN을 사용한다.

ON을 사용해서 결합 조건을 표현할 수 있고 결합에 사용하는 키 이름이 같은 경우 USING 사용해서 표현할 수 있다.

SELECT t1.name, t2.salary
  FROM employee t1 JOIN info t2 USING (name);

내부 조인(JOIN, INNER JOIN)은 결합 조건이 일치하지 않는 레코드는 표시하지 않는다. 일치하지 않는 레코드를 표시하려면 외부 조인(외부 결합)을 사용해서 한쪽 테이블의 모든 레코드를 표시할 수 있다.

LEFT JOIN은 왼쪽 테이블(left_tbl)의 결합 키(id)와 일치하는 오른쪽 테이블(right_tbl)의 컬럼 값을 NULL로 사용해서 모든 레코드를 표시한다.

SELECT left_tbl.*
  FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id
  WHERE right_tbl.id IS NULL;

RIGHT JOIN은 반대로 오른쪽 테이블(right_tbl)의 모든 레코드를 표시한다. 포터블한 코드를 위해서 LEFT JOIN이 권장된다. 그리고 LEFT JOIN과 RIGHT JOIN을 같이 사용하면 문제가 될 수 있다.



댓글