NULL

JOIN(INNER JOIN, LEFT JOIN), ON(조건 절) 본문

SQL

JOIN(INNER JOIN, LEFT JOIN), ON(조건 절)

1924 2022. 2. 16. 05:32

INNER JOIN 구조

SELECT 열 이름 FROM 테이블명A
INNER JOIN 테이블명B
ON B.Key = A.Key;

테이블A와 테이블B 중 Key 값이 같은 정보를 모두 합쳐라

교집합되는 부분을 합친다고 봐도 무방하다

 

 

SELECT Customers.CustomerID, Orders.OrderID
FROM Customers

INNER JOIN Orders
ON Orders.CustomerID = Customers.CustomerID

테이블 Customers과 Orders중 키 값이 같은 정보를 모두 합친다.

 

 

여기서 테이블 명이 너무 길기 때문에 AS를 활용하면 좋다.

SELECT C.CustomerID, O.OrderID
FROM Customers AS C

INNER JOIN Orders AS O
ON O.CustomerID = C.CustomerID

C = Customers

O = Orders

 

위와 같이 이름을 재지정해서 적용해도 같은 결과값이 출력된다.

 

 

 

ON 조건절

컬럼명이 다르더라도 JOIN 조건을 사용할 수 있다.

WHERE절과 혼용해서 사용가능하며,

ON조건절에 검색조건을 사용할 수 있지만 WHERE를 쓰는 것을 권장한다.

 

INNER JOIN에서는 순서차이가 없지만

OUTER JOIN에서는 순서차이가 있다.

 

 

 

 

INNER JOIN

INNER JOIN은 회원들중에서 물건을 구매한 사람의 데이터만 뽑아온다.

 

LEFT JOIN

LEFT JOIN은 전체에서 구매내역만 가져온다

Customers는 그대로 놔두고, Orders는 교집합부분을 가져온다.

 

예를 들어 손님은 매장에 회원등록은 되어있지만 물건을 한번도 구매하지 않았을 수도 있다.

물건을 한번도 구매하지 않았는지 확인할 때도 쓴다.

 

SELECT C.CustomerID, O.OrderID
FROM Customers AS C

LEFT JOIN Orders AS O
ON O.CustomerID = C.CustomerID

 

결과값

 

CustomerID 1을 보면 회원이지만 OrderID는 null인 것으로 보아

회원이지만 물건을 한번도 구매하지 않은 것을 확인할 수 있다.

 

 

 

 

해당 JOIN들 외에도 다양한 JOIN이 존재한다.

Comments