SQL JOIN의 'INNER JOIN'과 'LEFT JOIN'의 차이점은 무엇인가

2025. 5. 2. 22:51·IT 지식 (기술면접 대비)

⭐️ SQL의 JOIN이란?

JOIN은 두 개 이상의 테이블을 서로 연결하여 관련된 데이터를 조회할 때 사용하는 SQL 문법이다.

 

관계형 데이터베이스에서는 데이터가 여러 테이블로 분리되어 저장되기 때문에,

테이블간 필요한 정보를 얻기 위해선 JOIN이 필수다. -> 사용 이유 ‼️

 

JOIN은 기본적으로 공통 컬럼(키)을 기준으로 두 테이블을 합친다.

 

조인의 종류에 따라 데이터가 합쳐지는 방식이 달라지는데, 이번 글에선 INNER JOIN과 LEFT JOIN에 대해서 알아보겠다.

 

⭐️ INNER JOIN & LEFT JOIN

INNER JOIN : 양쪽 테이블 모두에 일치하는 값이 있는 경우에만 반환을한다. 

-> 결과로는 교집합을 반환한다.

 

LEFT JOIN : 왼쪽 테이블의 모든 행 + 오른쪽 테이블의 일차하는 값을 반환 (없다면 NULL) 

-> 결과로는 왼쪽 기준의 전체 데이터를 가져온다.

 

[ 예제 테이블 ]

-- 회원 테이블 (users)
CREATE TABLE users (
  user_id INT PRIMARY KEY,
  name VARCHAR(50)
);

-- 주문 테이블 (orders)
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  user_id INT,
  product VARCHAR(50),
  FOREIGN KEY (user_id) REFERENCES users(user_id)
);

-- 더미 데이터 삽입
INSERT INTO users VALUES (1, '홍길동'), (2, '김철수'), (3, '이영희');
INSERT INTO orders VALUES (101, 1, '노트북'), (102, 1, '마우스'), (103, 2, '키보드');


-------------------- 오라클인 경우 ----------------------------

-- 회원 테이블 (users)
CREATE TABLE users (
  user_id INT PRIMARY KEY,
  name VARCHAR(50)
);

-- 주문 테이블 (orders)
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  user_id INT,
  product VARCHAR(50),
  FOREIGN KEY (user_id) REFERENCES users(user_id)
);

-- 더미 데이터 삽입
INSERT INTO users VALUES (1, '홍길동');
INSERT INTO users VALUES (2, '김철수');
INSERT INTO users VALUES (3, '이영희');

INSERT INTO orders VALUES (101, 1, '노트북');
INSERT INTO orders VALUES (102, 1, '마우스');
INSERT INTO orders VALUES (103, 2, '키보드');

 

🔥 INNER JOIN 

SELECT NAME, PRODUCT 
FROM USERS u 
INNER JOIN ORDERS o ON u.USER_ID = o.USER_ID;

 

INNER JOIN 결과

 

 

INNER JOIN은 두 테이블 모두에서 USER_ID가 일치하는 데이터만 가져온다.

 

결과화면과 같이 아이디가 같은 NAME 컬럼과 PRODUCT컬럼을 출력하는것을 볼 수 있다.

 

이영희는 주문 내역이 없기때문에 뜨지않는다.

 

하지만 이영희도 띄우고 싶은 경우가 있을 것이다. 이때 이제 LEFT JOIN을 사용하는 것이다.

 

🔥 LEFT JOIN

SELECT NAME, PRODUCT 
FROM USERS u 
LEFT JOIN ORDERS o ON u.USER_ID = o.USER_ID;

 

 

LEFT JOIN 결과

 

LEFT JOIN은 왼쪽에 작성된 테이블(FROM 다음에 나온 테이블이 왼쪽임)인 USERS 테이블의

 

모든 데이터를 기준으로 조인하며, 일치하지 않는 ORDERS의 데이터는 NULL로 표시된다.

 

결과적으로 주문이 없는 사용자인 이영희도 나오게 되는 것이다.

 

 

'IT 지식 (기술면접 대비)' 카테고리의 다른 글

RDBMS란  (0) 2025.05.08
데이터베이스의 다양한 유형 관계  (2) 2025.05.07
정규화(Normalization)란  (6) 2025.04.30
Primary Key와 Foreign Key의 차이와 각각의 역할  (0) 2025.04.29
SQL문 실행 순서  (4) 2025.04.29
'IT 지식 (기술면접 대비)' 카테고리의 다른 글
  • RDBMS란
  • 데이터베이스의 다양한 유형 관계
  • 정규화(Normalization)란
  • Primary Key와 Foreign Key의 차이와 각각의 역할
KoesJin
KoesJin
hEELo
  • KoesJin
    Seok DevLog
    KoesJin
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Back End (31)
        • DataBase (15)
        • JAVA (12)
        • JDBC (4)
      • Front End (9)
        • HTML5 & CSS (3)
        • Java Script (6)
        • REACT (0)
      • Server (9)
        • JSP - TomCat - Servlet (7)
        • Spring Boot (2)
      • GitHub (1)
      • AWS (1)
      • IT 지식 (기술면접 대비) (20)
      • Weekly TIL (39)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    css
    MVC 패턴
    weekly til - day 39
    from
    exception
    weekly til - day 43
    commit
    dml
    DAO
    View
    weekly til - day 41
    DDL
    weekly til - day 38
    select
    GC
    순서에 대하여
    INNER JOIN
    order by
    where
    weekly til - day 40
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
KoesJin
SQL JOIN의 'INNER JOIN'과 'LEFT JOIN'의 차이점은 무엇인가
상단으로

티스토리툴바