컴퓨터 공학

👉 [CS] Join

bitcodic 2021. 2. 14. 00:33

Good

SQL Join은 두 개 이상의 테이블에서 데이터를 결합하는 것을 의미함. 합집합의 개념이라고 보면 된다.

 

크게 보면 INNER JOIN / OUTER JOIN 두가지로 나눌 수 있음

 

OUTER JOIN은 INNER JOIN과 달리 일치하지 않는 데이터도 포함하여 두 개 이상의 테이블에서 데이터 결합함.

OUTER JOIN에는 LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 세 가지 유형

- LEFT OUTER JOIN: 왼쪽 테이블의 모든 레코드와 일치하는 오른쪽 테이블의 레코드를 반환하고, 일치하지 않는 경우 NULL 값 반환
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 레코드와 일치하는 왼쪽 테이블의 레코드를 반환하고, 일치하지 않는 경우 NULL 값 반환
- FULL OUTER JOIN: 왼쪽 테이블과 오른쪽 테이블의 모든 레코드를 반환하고, 일치하지 않는 경우 NULL 값 반환

OUTER JOIN은 INNER JOIN과 달리 일치하지 않는 데이터도 포함

 

INNER JOIN의 경우 Null 이 나타나는 경우가 없음. 일치하는 지가 중요하기 때문.


customers , orders 테이블이 있다고 가정하고 예시

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;


위 쿼리는 `orders` 테이블에서 `customer_id` 열과 `customers` 테이블에서 `customer_id` 열이 일치하는 경우에만 결과 반환. 이 쿼리는 `orders` 테이블과 `customers` 테이블 간의 관계를 INNER JOIN을 사용하여 찾음.

 

SELECT orders.order_id, customers.customer_name
FROM orders
LEFT JOIN customers
ON orders.customer_id = customers.customer_id;


위 쿼리는 `orders` 테이블의 모든 레코드와 `customers` 테이블에서 `customer_id` 열과 일치하는 경우 해당 `customers` 레코드를 반환하고, 일치하지 않는 경우에는 NULL 값을 반환. 이 쿼리는 `orders` 테이블과 `customers` 테이블 간의 관계를 LEFT OUTER JOIN을 사용하여 찾음.