본문 바로가기

데이터베이스/관계형(RDB)

[MySQL] 테이블 조인(JOIN)




테이블 조인(JOIN)의 종류


조인의 종류는 크게 INNER JOINOUTER JOIN으로 구분할 수 있고, 

OUTER JOIN은 다시 LEFT OUTER JOIN과 RIGHT OUTER JOIN 그리고 FULL OUTER JOIN으로 구분할 수 있다.


조인의 처리에서 어느 테이블을 먼저 읽을지를 결정하는 것은 상당히 중요하며, 

그에 따라 처리할 작업량이 상당히 달라집니다. 


INNER JOIN은 어느 테이블을 먼저 읽어도 결과가 달라지지 않으므로 

조인의 순서를 조절해서 다양한 방법으로 최적화를 수행할 수 있다. 


하지만 OUTER JOIN은 반드시 OUTER가 되는 테이블을 먼저 읽어야 하기 때문에 

조인 순서를 옵티마이저가 선택할 수 없다.



          






-----------------------------------------------------------------------------------------------------------------------------------------------




   


현재 이 두개의 테이블과 테이블 데이터가 있고 이 테이블을 통해 예제를 보여준다.




JOIN (INNER JOIN)


일반적으로 '조인'은 INNER JOIN을 지칭하고, 두 개의 테이블을 조건에 맞춰 연결해주는 작업.

SELECT *
FROM users u
INNER JOIN usergroup g ON (g.GroupCode = u.GroupCode)


두 테이블의 중복값(공통값)을 출력해준다. 

즉, g.GroupCode = u.GroupCode 조건을 만족하는 레코드만 조인의 결과로 가져온다.





OUTER JOIN


조인할 테이블에 일치하는 레코드가 있으면 INNER 조인과 같은 결과를 만들어내지만, 

INNER 테이블에 조건을 만족하는 레코드가 없는 경우에는 조인할 테이블의 칼럼을 모두 NULL로 채워서 가져옵니다


INNER 테이블이 조인의 결과에 전혀 영향을 미치지 않고, 

OUTER 테이블의 내용에 따라 조인의 결과가 결정되는 것이 OUTER JOIN의 특징.


# EX1)

SELECT *
FROM users u
LEFT OUTER JOIN usergroup g ON (g.GroupCode = u.GroupCode)



# EX2)

SELECT *
FROM users u
RIGHT OUTER JOIN usergroup g ON (g.GroupCode = u.GroupCode)



# EX3)

SELECT *
FROM usergroup g
LEFT OUTER JOIN users u ON (u.GroupCode = g.GroupCode)



# EX4)

SELECT *
FROM usergroup g
RIGHT OUTER JOIN users u ON (u.GroupCode = g.GroupCode)




참고 - MySQL 테이블 조인