Join문을 쓰는 이유 : 조회를 하고 싶은데 원하는 데이터가 A테이블, B테이블에 각각 있을 때 사용한다.
Join문 원리 : 테이블A와 테이블 B에 공통적인 컬럼이 있다면 둘이 연결 시킬 수 있다!
left join : 공통 컬럼 (키값) 을 기준으로, 하나의 테이블에 값이 없더라도 모두 조회되는 경우를 의미한다.
구조는 A_table as a left join B_table as b on a.공통컬럼 = b.공통컬럼
B_table에 데이터가 없어도 조회가 가능하다! 벤다이어그램으로 생각해보면 A테이블의 데이터와 A테이블과 B테이블의 교집합 부분
left join을 써준뒤 on 뒤에는 별칭.공통컬럼 = 별칭. 공통컬럼을 적어주면 된다.
Inner join : 공통 컬럼 (키값) 을 기준으로, 두 테이블 모두에 있는 값만 조회한다.
구조는 A_table as a inner join B_table as b on a.공통컬럼 = b.공통컬럼
inner join 같은 경우는 벤 다이어그램에서 교집합 부분이다.
/*
1. Orders 테이블
• order_id (int) : 주문 ID
• customer_id (int) : 고객 ID
• amount (decimal) : 주문 금액
2. Customers 테이블
• customer_id (int) : 고객 ID
• customer_name (varchar) : 고객 이름
*/
/* 모든 주문에 대해, 주문한 고객의 이름과 주문 금액을 조회하는 쿼리를 작성하라.
고객이 없는 주문도 모두 포함되어야 한다 */
SELECT o.order_id, c.customer_name, o.amount
FROM Orders o LEFT JOIN Customers c ON o.customer_id = c.customer_id;
/* 주문과 고객이 모두 있는 경우만 포함하여 고객 이름과 주문 금액을 조회하는 쿼리를 작성 */
SELECT o.order_id, c.customer_name, o.amount
FROM Orders o INNER JOIN Customers c ON o.customer_id = c.customer_id;