[SQL] #07 SQL JOIN 완전 정복! INNER부터 LEFT, RIGHT까지 한눈에

2025. 7. 29. 16:00·Database/SQL
반응형

 

안녕하세요! 토스트데브입니다.
오늘은 SQL에서 여러 테이블을 연결해 데이터를 조회하는 방법, 바로 JOIN에 대해 정리해보겠습니다.

 

 

🔗 SQL JOIN이란?

SQL의 JOIN은 두 개 이상의 테이블을 연결해 관련 있는 데이터를 함께 조회할 수 있도록 해주는 기능입니다.
실제 프로젝트에서는 데이터가 여러 테이블에 나뉘어 저장되기 때문에, JOIN은 실무에서 반드시 필요한 핵심 기능입니다.

 

 

📌 JOIN의 기본 구조

SELECT A.컬럼, B.컬럼
FROM 테이블A A
JOIN 테이블B B
ON A.기준컬럼 = B.기준컬럼;

 

 

🧩 JOIN의 종류

1️⃣ INNER JOIN – 공통된 값만 조회

두 테이블에서 일치하는 데이터만 조회합니다.

SELECT users.name, orders.product
FROM users
INNER JOIN orders
ON users.id = orders.user_id;

➡ users.id와 orders.user_id가 일치하는 경우만 결과에 포함됩니다.

 

2️⃣ LEFT JOIN – 왼쪽 테이블은 모두, 오른쪽은 일치하는 것만

SELECT users.name, orders.product
FROM users
LEFT JOIN orders
ON users.id = orders.user_id;

➡ 사용자 목록은 전부 보여주고, 주문이 없으면 NULL로 표시됩니다.

 

3️⃣ RIGHT JOIN – 오른쪽 테이블은 모두, 왼쪽은 일치하는 것만

SELECT users.name, orders.product
FROM users
RIGHT JOIN orders
ON users.id = orders.user_id;

➡ 주문 데이터는 모두 보여주고, 사용자 정보가 없으면 NULL

 

4️⃣ FULL OUTER JOIN – 양쪽 모두 출력

모든 행을 보여주고, 일치하지 않으면 NULL로 채웁니다.
※ MySQL은 기본적으로 지원하지 않으며 UNION으로 대체 가능

SELECT users.name, orders.product
FROM users
FULL OUTER JOIN orders
ON users.id = orders.user_id;

 

5️⃣ SELF JOIN – 자기 자신과 연결

한 테이블 안에서의 관계(예: 직원-상사)를 표현할 때 사용합니다.

SELECT A.name AS 직원, B.name AS 상사
FROM employees A
JOIN employees B
ON A.manager_id = B.id;

 

 

🛠️ 실무 팁

  • 조인 조건은 반드시 ON 또는 USING으로 명확히 지정해야 합니다.
  • 컬럼명이 겹치는 경우 테이블명.컬럼명을 써야 오류를 피할 수 있습니다.
  • 조인이 많아질수록 성능 저하 가능성이 있으니 인덱스와 EXPLAIN 활용을 고려하세요.

 

 

📝 마무리

SQL JOIN은 데이터베이스 내 복잡한 관계를 풀어내는 열쇠입니다.
INNER, LEFT, RIGHT, SELF, FULL JOIN 각각의 쓰임을 이해하면 실무에서 더욱 유연하게 데이터를 연결하고 처리할 수 있어요!

 

#SQL #SQL기초 #JOIN #INNERJOIN #LEFTJOIN #RIGHTJOIN #FULLJOIN #SELFJOIN #데이터베이스 #쿼리작성법 #DBMS #MySQL #SQL강의

반응형
저작자표시 비영리 (새창열림)

'Database > SQL' 카테고리의 다른 글

[SQL] #09 뷰(View)와 인덱스(Index) 완벽 이해! 속도와 재 사용을 동시에 잡자!  (5) 2025.07.31
[SQL] #08 SQL 서브쿼리 완전 정리, 중첩 쿼리의 개념과 예제까지  (3) 2025.07.30
[SQL] #06 SQL 데이터 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)  (0) 2025.07.28
[SQL] #05 SQL 집계 함수(count, sum, avg, max, min)와 Group by  (1) 2025.07.27
[SQL] #04 SQL 조건문 완벽정리! WHERE, AND, OR, NOT 쉽게 배우기!  (0) 2025.07.18
'Database/SQL' 카테고리의 다른 글
  • [SQL] #09 뷰(View)와 인덱스(Index) 완벽 이해! 속도와 재 사용을 동시에 잡자!
  • [SQL] #08 SQL 서브쿼리 완전 정리, 중첩 쿼리의 개념과 예제까지
  • [SQL] #06 SQL 데이터 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)
  • [SQL] #05 SQL 집계 함수(count, sum, avg, max, min)와 Group by
TOASTDEV
TOASTDEV
인스턴트 코딩 #토스트데브 #토스트뎁 #코딩공부 #개발입문
  • TOASTDEV
    토스트데브
    TOASTDEV
    • 분류 전체보기 (155)
      • 알쓸신잡 (47)
        • 코딩에 대하여 (13)
        • 컴퓨터에 대하여 (12)
        • IT 국내외 소식 (22)
      • Web Front (28)
        • HTML (10)
        • CSS (14)
        • JavaScript (4)
      • Programming (35)
        • PHP (35)
      • Database (12)
        • SQL (12)
        • MySQL (0)
      • Server (24)
        • Linux (24)
      • Review (9)
        • Overseas Trip (0)
        • Domestic Travel (0)
        • Product Use Review (4)
        • Football Sports Review (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Youtube Toastdev
    • Naver Blog
  • 공지사항

    • [유튜브] 유튜브 영상 업로드 안내
  • 인기 글

  • 태그

    데이터베이스
    css기초
    프론트엔드기초
    컴퓨터기초
    서버입문
    SQL문법
    PHP문자열
    서버보안
    서버관리
    php문법
    웹디자인기초
    리눅스보안
    php기초
    웹프로그래밍
    ubuntuserver
    html기초
    php
    리눅스기초
    ubuntu서버
    웹개발기초
    코딩입문
    웹개발
    HTML
    웹개발입문
    sql
    SQL기초
    SQL강의
    php입문
    프론트엔드
    데이터분석
  • 최근 댓글

  • 최근 글

  • 전체
    오늘
    어제
  • 반응형
  • hELLO· Designed By정상우.v4.10.3
TOASTDEV
[SQL] #07 SQL JOIN 완전 정복! INNER부터 LEFT, RIGHT까지 한눈에
상단으로

티스토리툴바