etc.zip/sql

[MySQL] JOIN(INNER JOIN, LEFT JOIN, RIGHT JOIN)

neesoo 2024. 1. 4. 20:18
728x90

JOIN

둘 이상의 테이블을 묶어 하나의 집합으로 만드는 것으로, 서로 다른 테이블에서 데이터를 가져오고 싶을 때 사용한다. 

 

INNER JOIN

두 테이블에서 공통된 데이터가 존재하는 행에 대해서만 데이터를 가져온다.

# 테이블: FIRST_HALF, ICECREAM_INFO

SELECT FIRST_HALF.FLAVOR 
FROM FIRST_HALF JOIN ICECREAM_INFO
ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR
WHERE TOTAL_ORDER > 3000 AND INGREDIENT_TYPE = 'fruit_based'
ORDER BY TOTAL_ORDER DESC

 

아래와 같이 별칭을 써서(AS로 표기) 나타내는 방법도 있다. 또한 띄어쓰기 함으로써 AS는 생략가능하다.

# 테이블: FIRST_HALF, ICECREAM_INFO

SELECT FH.FLAVOR 
FROM FIRST_HALF AS FH JOIN ICECREAM_INFO AS II
ON FH.FLAVOR = II.FLAVOR
WHERE TOTAL_ORDER > 3000 AND INGREDIENT_TYPE = 'fruit_based'
ORDER BY TOTAL_ORDER DESC

 


 

LEFT JOIN, RIGHT JOIN

LEFT JOIN 

첫번째 테이블을 기준으로 두번째 테이블을 조합한다. 

ON에서 조건을 만족하지 않을 때 첫번째 테이블의 필드 값을 그대로 가져오고, 해당 레코드의 두번째 테이블 필드값은 NULL로 표시된다. (ON 절은 WHERE절과 같은 기능)

 

 

RIGHT JOIN 

두번째 테이블을 기준으로 첫번째 테이블을 조합한다. 

ON에서 조건을 만족하지 않을 때 두번째 테이블의 필드 값을 그대로 가져오고, 해당 레코드의 첫번째 테이블 필드값은 NULL로 표시된다. (ON 절은 WHERE절과 같은 기능)

728x90