모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!
🐬 OUTER JOIN
INNER JOIN은 두 테이블의 공통적으로 존재하는 열의 값을 기준으로 합치는 구문이라면,
OUTER JOIN은 한쪽 테이블에 열의 값이 없더라도 합쳐줍니다.
OUTER JOIN 에는 LEFT JOIN 과 RIGHT JOIN 의 두 종류가 있습니다.
예를 들어 Table1에는 id가 1,2,3 이 있고 Table2에는 id가 1,2 밖에 없을 때, INNER JOIN을 한다면 최종 출력 값은 id 1,2 에 대한 테이블이 됩니다. 반면, Table1에 대한 LEFT JOIN을 한다면 id 1,2,3 에 대한 테이블을 출력해줍니다. 대신 Table2의 열에 대한 데이터는 모두 NULL 값으로 들어갑니다. 이러한 점이 두 구문의 가장 큰 차이입니다.
실제 사례에 대해 예를 들어 보자면 주문을 한 번이라도 한 고객의 정보를 가져올 때는 INNER JOIN을, 주문을 한 번도 안 했지만 회원가입은 한 고객의 정보를 포함하고자 할 때에는 OUTER JOIN을 사용합니다.
🐬 LEFT JOIN
Customers 테이블을 기준으로 Orders 테이블을 합치는 쿼리입니다. 이때 LEFT JOIN 이기 때문에 Orders 테이블에서의 값 존재 여부에 관계없이 모든 Customers 테이블 값을 출력합니다. 출력 결과, Orders 테이블의 값이 없는 경우 NULL로 출력되는 것을 확인할 수 있습니다.
SELECT * FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
또한 WHERE 절을 사용해서 주문을 한 적이 없는 회원 정보를 불러올 수도 있습니다.
SELECT * FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE OrderID IS NULL;
LEFT JOIN 과 RIGHT JOIN 을 구분짓기는 하지만, RIGHT JOIN은 잘 사용하지 않습니다. LEFT JOIN 에서 테이블의 순서만 바꿔주면 RIGHT JOIN 과 같은 결과를 얻을 수 있고, 일반적으로 LEFT JOIN의 해석이 좀더 간편하기 때문입니다.
'🐬 SQL > ✏️ 이론' 카테고리의 다른 글
✏️ 11. UNION (0) | 2023.06.28 |
---|---|
✏️ 09. INNER JOIN (0) | 2023.06.27 |
✏️ 08. CASE (0) | 2023.06.25 |
✏️ 07. GROUP BY, HAVING (0) | 2023.06.25 |
✏️ 06. 집계함수 (0) | 2023.06.25 |