본문 바로가기

Back-End/DataBase

SQL 기초 3 (Join)

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;

'Back-End > DataBase' 카테고리의 다른 글

Spring JdbcTemplate의 RowMapper()  (1) 2024.12.09
커넥션 풀과 데이터소스  (0) 2024.12.06
JDBC - CRUD  (0) 2024.12.06
SQL 기초 2  (2) 2024.11.07
SQL 기초 1  (3) 2024.11.06