Skip to main content

Command Palette

Search for a command to run...

[sql] JOIN vs UNION

Published
•2 min read•View as Markdown
[sql] JOIN vs UNION
K

I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).

1️⃣ JOIN (조인)

  • 두 테이블의 행(Row)들을 연결하여 하나의 결과 집합을 만듦

  • 두 테이블 간의 공통된 키(Foreign Key 또는 Primary Key)를 기반으로 데이터를 결합

  • 결과는 여러 개의 컬럼(Column)으로 확장됨

✅ 예제

SELECT A.id, A.name, B.order_date
FROM Customers A
JOIN Orders B ON A.id = B.customer_id;

➡ Customers 테이블과 Orders 테이블을 customer_id를 기준으로 조인
➡ 하나의 행(row)에서 두 테이블의 데이터를 합친 결과를 반환


2️⃣ UNION (유니온)

  • 두 개 이상의 결과 집합을 위아래로 합침

  • 각 SELECT의 컬럼 개수와 데이터 타입이 동일해야 함

  • 기본적으로 중복된 데이터를 제거 (UNION ALL을 사용하면 중복 허용)

✅ 예제

SELECT name, email FROM Customers
UNION
SELECT name, email FROM Employees;

➡ Customers와 Employees 테이블에서 같은 컬럼을 가져와 합침
➡ 두 테이블에서 공통된 name, email을 위아래로 합친 결과를 반환
➡ 중복 값은 제거됨 (UNION ALL을 사용하면 중복 포함)


🔥 핵심 차이

JOINUNION
🔹 데이터 결합 방식행(Row)들을 연결하여 확장 (가로 확장)결과 집합을 위아래로 추가 (세로 확장)
🔹 테이블 수최소 2개 이상의 테이블 필요같은 컬럼 구조를 가진 여러 개의 SELECT 결과
🔹 중복 데이터관계된 데이터만 결합UNION은 중복 제거, UNION ALL은 중복 포함
🔹 컬럼 개수 조건각 테이블의 컬럼 개수 달라도 됨SELECT 절의 컬럼 개수와 데이터 타입이 같아야 함

🚀 비유로 이해하기

  • JOIN: 두 개의 테이블을 가로로 합쳐서 새로운 테이블을 만든다.
    → 🏠 Customers(고객 정보) + 📦 Orders(주문 정보) → 고객이 주문한 내역을 연결

  • UNION: 같은 구조의 데이터를 위아래로 합친다.
    → 🏢 서울 지점 직원 명단 + 🏢 부산 지점 직원 명단 → 전체 직원 명단


✅ 정리

  • JOIN은 여러 테이블에서 관계를 맺고 데이터를 조합하는 데 사용

  • UNION은 같은 형식의 데이터를 한 줄씩 추가하여 합치는 데 사용

More from this blog

[Python 자료구조] Binary Tree(이진 트리) 개념과 배열

자료구조 중에서도 가장 자주 등장하고, 가장 중요한 트리 중 하나가 바로 이진트리(Binary Tree)이다.만약 자료구조 공부를 처음 시작했다면, 이진트리는 꼭 제대로 이해하고 넘어가야 할 핵심 개념이다. 그렇다면 이진트리는 도대체 어떤 구조이며, 왜 이렇게 중요할까? 🌳 이진트리란? 이진트리(Binary Tree)는 이름 그대로 자식 노드를 최대 두 개까지만 가질 수 있는 트리를 의미한다.자식 노드가 1개거나 0개일 수도 있지만, 최대...

Apr 8, 20253 min read

[Python 자료구조] Tree(트리) 구조

회사 조직도, 가계도, 또는 어떤 계층적인 구조를 표현할 때 자주 등장하는 그림이 있다. 바로 '트리 구조'이다. 그런데 이 구조를 처음 보면, "도대체 어디가 나무야?" 라고 생각할 수 있다. 하지만 나무를 거꾸로(180도 돌려서) 생각해보면 이해가 쉽다. 위쪽에 커다란 줄기(기둥)가 있고, 아래로 가지가 퍼져 나가는 모습과 아주 흡사하기 때문이다. 그래서 우리는 이런 구조를 트리(Tree) 구조라고 부른다. 🧩 트리(Tree)란 무엇인가...

Apr 8, 20253 min read

[Python 자료구조] Stack(스택)

스택 정의, 값 넣기/빼기 프로그래밍을 처음 접할 때 나오는 대표적인 자료구조 중 하나가 바로 스택(Stack) 이다. 이름만 들으면 어렵게 느껴질 수 있지만, 실제로는 우리 일상에서도 쉽게 찾아볼 수 있는 개념이다. 예를 들어 젠가(Jenga) 게임을 떠올려보자. 스택이란? 젠가로 이해하는 Stack의 원리 젠가 블럭을 하나씩 통에 넣고 꺼내는 상황을 상상해보자. 가장 최근에 넣은 블럭은 통의 가장 위에 쌓이게 된다. 그리고 꺼내고자 할 때...

Apr 7, 20253 min read

[Sql] 제약 조건과 무결성

SQL을 공부하다 보면 반드시 만나게 되는 용어들이 있다. 바로 기본키, 외래키, 무결성 제약 조건 같은 개념이다. 이 글에서는 이 용어들을 단순히 암기하는 게 아니라, 예시를 통해 자연스럽게 이해할 수 있도록 정리해보았다. 🎯 제약 조건이란? 제약 조건(Constraint)은 데이터베이스에 저장되는 데이터의 정확성과 신뢰성을 보장하기 위해 설정하는 규칙이다. ✅ 한 줄에 하나씩만 작성해야 하며, 테이블 생성 시 컬럼 옆에 정의하거나 AL...

Apr 7, 20253 min read

[Python TIL] Python에서 False와 True로 평가되는 값들

파이썬에서는 if 조건문이나 while 같은 컨트롤 흐름에서 자동으로 False로 간주되는 값들이 있다. 이걸 "Falsy 값" 또는 "Falsy Object" 라고 부른다. 이걸 알아두면 코드를 훨씬 깔끔하게 쓸 수 있다. 예를 들어, if not my_list: 같은 표현이 빈 리스트를 체크하는 데 쓰이기도 하기 때문이다. ⚠️ 파이썬에서 False로 평가되는 값들 (Falsy 값) 유형예시설명 숫자형0, 0.0, 0j정수, ...

Apr 6, 20252 min read

Code Compass

75 posts