개발자공부일기

SQL JOIN 본문

CS지식/데이터베이스

SQL JOIN

JavaCPP 2025. 3. 10. 21:14

INNER JOIN

INNER JOIN은 교집합을 의미하며, 이를 사용하면 두 테이블의 공통값이 매칭되는 데이터만을 조회합니다.

SELECT A.*, B.*
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;

 

 

OUTER JOIN

FULL OUTER JOIN은 합집합을 의미한다. 두 테이블간의 공통으로 매칭되는 값뿐만 아니라 매칭되지 않는 데이터까지 조회한다.

SELECT A.*, B.*
FROM TableA A
FULL JOIN TableB B ON A.id = B.id;

 

LEFT OUTER JOIN은 A테이블을 기준으로 결합하는 것이다.

SELECT A.*, B.*
FROM TableA A
LEFT JOIN TableB B ON A.id = B.id;

 

RIGHT OUTER JOIN은 B테이블을 기준으로 결합하는 것이다.

SELECT A.*, B.*
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id;

 

OUTER JOIN의 종류

  • LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인
  • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인
  • FULL OUTER JOIN: 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것

 

CROSS JOIN

두 테이블의 모든 행을 조합하여 곱집합(Cartesian Product)을 생성합니다.

SELECT A.*, B.*
FROM TableA A
CROSS JOIN TableB B;

 

예제

간단한 데이터 테이블을 만들고 JOIN을 적용하는 예제

1. Customers (고객 테이블)

 

id  name  city
1 Alice Seoul
2 Bob Busan
3 Charlie Daegu

2. Orders (주문 테이블)

 

id  customer_id  product
1 1 Laptop
2 2 Phone
3 4 Tablet

INNER JOIN 예제 (일치하는 데이터만 조회)

SELECT Customers.id, Customers.name, Orders.product 
FROM Customers
INNER JOIN Orders ON Customers.id = Orders.customer_id;

🔹 결과 (id=3인 Charlie는 주문 내역이 없어서 제외됨)

id  name  product
1 Alice Laptop
2 Bob Phone

LEFT JOIN 예제 (고객은 모두 출력, 주문이 없으면 NULL)

SELECT Customers.id, Customers.name, Orders.product 
FROM Customers
LEFT JOIN Orders ON Customers.id = Orders.customer_id;

🔹 결과 (Charlie도 포함되지만 주문이 없어서 NULL)

id  name  product
1 Alice Laptop
2 Bob Phone
3 Charlie NULL

RIGHT JOIN 예제 (주문이 있는 고객만 출력, 없는 고객 제외)

SELECT Customers.id, Customers.name, Orders.product 
FROM Customers
RIGHT JOIN Orders ON Customers.id = Orders.customer_id;

🔹 결과 (Charlie는 주문이 없어서 제외, customer_id=4인 주문은 Customers 테이블에 고객 정보가 없어 NULL)

 

id  name  product
1 Alice Laptop
2 Bob Phone
NULL NULL Tablet

 FULL JOIN 예제 (모든 데이터 출력, 일치하지 않으면 NULL)

SELECT Customers.id, Customers.name, Orders.product 
FROM Customers
FULL JOIN Orders ON Customers.id = Orders.customer_id;

🔹 결과 (Charlie와 customer_id=4인 주문도 포함)

id  name  product
1 Alice Laptop
2 Bob Phone
3 Charlie NULL
NULL NULL Tablet

 

CROSS JOIN 예제 (모든 조합 생성)

SELECT Customers.name, Products.product, Products.price 
FROM Customers
CROSS JOIN Products;

🔹 결과 (모든 고객이 모든 상품과 조합됨)

 

name product price
Alice Laptop 1000
Alice Phone 500
Bob Laptop 1000
Bob Phone 500

'CS지식 > 데이터베이스' 카테고리의 다른 글

무결성  (0) 2025.02.24
ER 모델,Primary Key ,Foreign Key  (0) 2025.02.21
데이터베이스 정규화  (0) 2024.12.03