[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] #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
[SQL] #03 SELCT 문 완벽 정리! 데이터 조회의 모든 것!  (0) 2025.07.17
[SQL] #02 SQL이란? 데이터베이스와 대화하는 언어!  (0) 2025.07.15
'Database/SQL' 카테고리의 다른 글
  • [SQL] #06 SQL 데이터 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)
  • [SQL] #05 SQL 집계 함수(count, sum, avg, max, min)와 Group by
  • [SQL] #04 SQL 조건문 완벽정리! WHERE, AND, OR, NOT 쉽게 배우기!
  • [SQL] #03 SELCT 문 완벽 정리! 데이터 조회의 모든 것!
TOASTDEV
TOASTDEV
인스턴트 코딩 #토스트데브 #토스트뎁 #코딩공부 #개발입문
  • TOASTDEV
    토스트뎁
    TOASTDEV
    • 분류 전체보기 (59) N
      • 알쓸신잡 (20)
        • 코딩에 대하여 (13)
        • 컴퓨터에 대하여 (5)
        • IT 국내외 소식 (2)
      • Web Front (6)
        • HTML (6)
        • CSS (0)
        • JavaScript (0)
      • Programming (15)
        • PHP (15)
      • Database (7) N
        • SQL (7) N
        • MySQL (0)
      • Server (11) N
        • Linux (11) N
  • 블로그 메뉴

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

    • Youtube Toastdev
    • Naver Blog
  • 공지사항

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

  • 태그

    웹개발입문
    ubuntu서버
    ict
    웹개발기초
    SQL문법
    ubuntuserver
    html기초
    우분투서버
    코딩입문
    데이터분석
    프론트엔드
    데이터베이스
    dbms
    php입문
    php문법
    HTML
    php
    sql
    코딩기초
    서버관리
    SQL강의
    php기초
    php코딩
    리눅스서버
    서버입문
    SQL기초
    리눅스기초
    웹프로그래밍
    웹개발
    코딩공부
  • 최근 댓글

  • 최근 글

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

티스토리툴바