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을 사용하여 찾음.
'컴퓨터 공학' 카테고리의 다른 글
👉 [Flutter] 앱 아이콘 뱃지 만들기(iOS/Android) 방법론 삽질기 (3) | 2021.06.04 |
---|---|
👉 [Flutter] FCM 사용시, iOS에서 백그라운드 작동이 안될 때 (0) | 2021.05.05 |
👉 [네트워크] 나는 왜 SocketIO 대신 Websocket 서버를 구축하였는가? (0) | 2021.01.12 |
👉 [네트워크] HTTP 는 소켓 통신이에욧 !!! (4) | 2020.09.24 |
👉 [Python] String 값으로 함수 호출하기 (0) | 2019.12.05 |