SQL 공부일지

[SQL 실습] JOIN의 기초 알아보기 (INNER JOIN, OUTER JOIN)

PM곰돌 2023. 3. 15. 09:53

JOIN이란?

여러개의 테이블은 각각 PK(Primary Key)를 가지고 다른 테이블과 FK(Foriegn Key)로 연결되어있다. 앞서서 설명했던 조회문들은 한 테이블에서 정보를 가져오는 예시들이었지만 JOIN은 2개 이상 테이블을 연동해서 정보를 가져오는데 사용되며 가장 많이 사용하게 될 구문이다.

기본 JOIN

INNER JOIN (내 부조인)이 JOIN의 기본이고 가장 많이 사용된다. 기본 형식은 다음과 같다.

SELECT 열이름
FROM 테이블명 1
	INNER JOIN 테이블명 2
	ON 조인 조건
WHERE 검색 조건

여기서 WHERE은 생략이 가능하다.

아래 예시를 보면서 같이 확인해보도록 하자.

 

실습예제 및 데이터베이스는 혼자공부하는 SQL을 참고합니다.

https://asa0677.tistory.com/8

 

가상 데이터로 SQL 기초 실습하기 (WHERE, AND, OR, BETWEEN)

SQL을 처음 이해할때는 데이터베이스를 가지고 실제로 조회해보는 것이 가장 빠르게 이해가 된다. 활용할 수 있는 많은 데이터들이 있지만 강의까지 같이 제공하고 있는 '혼자공부하는 SQL'시리

asa0677.tistory.com

→ 데이터 베이스 생성은 이글을 참고하자

 

이번에도 예전에 만들어두었던 market_db를 활용해서 데이터를 추출해본다.

[member] 테이블

[buy] 테이블

여기서 단순히 이 두개 테이블에 있는 정보를 전부 합친다고 하면 다음과 같은 쿼리문을 작성할 수 있다.

USE market_db;
SELECT * 
   FROM buy
     INNER JOIN member
     ON buy.mem_id = member.mem_id;

하지만 이런 경우가 아니라 특별한 조건이 더해지게 되는 경우가 대부분이다. 예를 들어서

지갑을 구매한 멤버의 이름과 주소를 확인하고 싶다면

SELECT mem_name, addr 
   FROM buy
     INNER JOIN member
     ON buy.mem_id = member.mem_id
   WHERE prod_name = '지갑';

위와 같은 쿼리 작성을 통해 확인할 수 있다.

SQL문을 작성을 위해서는 주어진 문장을 구조화 시킬수 있어야 하는데 위에서 제시한 문장을

‘지갑을 구매한 멤버(WHERE prod_name) 의 이름(mem_name)과 주소(addr)을 확인(SELECT)하고 싶다’ 라는식으로 받아들일 수 있도록 훈련하는 것이 중요한 것 같다.

 

INNER JOIN과 OUTER JOIN의 차이점

 

JOIN에는 INNER JOIN과 OUTER JOIN이 있다. INNER JOIN은 두 테이블에서 공통된 값만을 반환하고,

OUTER JOIN은 한 쪽 테이블에 데이터가 있더라도 결과를 반환한다.

예를 들어, 회원 정보와 주문 정보가 있는 두 개의 테이블이 있다고 가정하자.

INNER JOIN을 사용하면 회원 정보와 주문 정보에서 공통된 값을 반환하고,

OUTER JOIN을 사용하면 회원 정보와 주문 정보 중 어느 한 쪽에만 데이터가 있는 경우에도 결과를 반환한다.

 

다음 INNER JOIN과 OUTER JOIN에 대한 예시를 살펴보자

USE market_db;
SELECT member.mem_name, buy.prod_name
   FROM member
     INNER JOIN buy
     ON member.mem_id = buy.mem_id;

위의 쿼리문은 INNER JOIN을 사용하여 회원 정보와 구매 정보에서 공통된 값을 반환한다.

즉, 회원 정보와 구매 정보에서 공통된 mem_id 값을 가진 데이터만 반환한다.

USE market_db;
SELECT member.mem_name, buy.prod_name
   FROM member
     LEFT OUTER JOIN buy
     ON member.mem_id = buy.mem_id;

위의 쿼리문은 LEFT OUTER JOIN을 사용하여 회원 정보를 기준으로 구매 정보를 가져온다.

즉, 구매 정보 중 회원 정보에 매칭되는 데이터가 없는 경우에도 결과를 반환할수 있다..

이러한 INNER JOIN과 OUTER JOIN은 데이터를 조합할 때 중요한 역할을 한다.

 

INNER JOIN은 두 개의 테이블에서 공통된 값을 가져오기 때문에, 두 테이블이 서로 연결되어 있을 때 사용하기 좋고. OUTER JOIN은 한 쪽에 데이터가 없더라도 결과를 반환하기 때문에, 왼쪽 또는 오른쪽 테이블에서 데이터가 누락될 가능성이 있는 경우 사용하기 좋다.

 

 

 

'SQL 공부일지' 카테고리의 다른 글

[SQL 실습] 조회 가능한 데이터베이스  (0) 2023.03.27
[SQL 실습] JOIN (2)  (0) 2023.03.22
[MySQL 실습] INSERT, DESC  (0) 2023.03.02
MySQL Workbench ERD살펴보기  (0) 2023.03.01
[MySQL 실습] ORDER BY, GROUP BY  (0) 2023.02.17