티스토리 뷰
서론
관계형 데이터베이스에서 두 테이블을 합치는 방법중 하나인 LEFT JOIN과 ON의 사용법을 소개합니다.
본론
관계형 데이터베이스에서는 두 테이블에서 같은 칼럼을 이용해 하나의 테이블처럼 사용할 수 있습니다.
LEFT JOIN
LEFT JOIN을 이해하기 위해서는 아래 다이어그램을 참고하는 것이 좋습니다.
출처: https://www.w3schools.com/sql/sql_join_left.asp
다이어그램 범위에서 TABLE1만으로 이루어진 부분도 포함되는 것을 알 수 있습니다. 즉, TABLE1은 그대로 두고 TABLE1과 TABLE2의 교집합 부분만을 합쳐준다고 생각할 수 있습니다.
ON
JOIN할 때에 교집합 부분의 조건을 나타내는 절입니다.
Person과 Device라는 테이블이 존재할 때 Person의 id가 Device에 person_id로 존재한다고 가정할 때 두 테이블을 합치기 위해서는 다음과 같이 나타낼 수 있습니다.
SELECT Person.name, Device.name
FROM Person
LEFT JOIN Device
ON Person.id = Device.person_id;
다이어그램에 대한 부가설명
아래 SQL은 Customers 테이블에 Orders 테이블을 LEFT JOIN 하고 있습니다.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
결과를 보면 Orders.OrderID가 중간중간 빈곳이 보입니다.
LEFT JOIN은 Customers 테이블을 기준으로 JOIN된 것이기 때문에 ON 에 부합하는 Orders의 레코드가 존재하지 않는다면 빈 값으로 표현되는 것입니다.
결론
다이어그램의 의미를 이해하면 JOIN에 대한 어려움이 풀리는 것 같습니다. 예를 들어 RIGHT JOIN은 LEFT JOIN의 반대가 될 것이고, INNER JOIN은 교집합 부분만을 의미할 것이라고 예상해볼 수 있습니다.
'개발자 > 데이터베이스(DB)' 카테고리의 다른 글
| [SQL] Function 만들기 (0) | 2024.02.13 |
|---|---|
| [SQL] 순위를 지정하는 RANK 함수 (0) | 2024.02.07 |
| [SQL] GROUP BY와 HAVING (0) | 2024.02.06 |
