SQL, Join & Union

sky.dev·2025년 4월 28일

Data&AI-Uni.

목록 보기
24/77
post-thumbnail

Join & Union

기본키(PK : Primary Key)

테이블은 반드시 하나의 기본키(PK)를 가져야 한다.
DB는 여러 테이블로 구성됨 → Key를 매개로 테이블을 연결!
PK는 한 개의 컬럼 (또는 복합키의 경우 여러 컬럼 가능)
→ 이 컬럼의 값은 테이블 내에서 반드시 유일
NULL 값을 허용하지 않음
→ 필수 데이터이자 유일성을 지켜야 하므로
한 테이블에 중복 없이 고유하게 식별할 수 있는 기준

테이블이 하나일 때 문제점
같은 값이 여러 번 반복되면 → 값 수정 시 모든 행을 동시에 수정해야 함
관리, 수정, 확장 모두 불편함
따라서 관련 정보는 테이블을 나눠서 관리하는 게 바람직한 DB 설계!

외래키(FK : Foreign Key)

JOIN으로 다른 테이블과 연결할 때 해당 테이블의 PK를 참조하는 키
하나의 테이블이 다른 테이블의 PK를 가져와 연결하는 역할
외래키는 참조하는 PK 값과 일치하거나, NULL 값을 가질 수 있음


Join

여러 테이블을 묶어서 하나처럼 사용할 때 JOIN 사용

JOIN 종류 4가지

INNER JOIN : 공통 부분(내부 조인)
OUTER JOIN : 외부 조인
LEFT JOIN : 왼쪽 테이블이 기준!
RIGHT JOIN : 오른쪽 테이블이 기준!

customers & orders 테이블 연결

SELECT c.customer_name, o.order_date
FROM customers c
JOIN orders o
ON c.customer_id = o.customer_id;

주문이 없는 고객도 포함 (LEFT JOIN)

SELECT c.customer_name, o.order_date
FROM customers c
LEFT JOIN orders o
ON c.customer_id = o.customer_id;

Union

SELECT문 결과를 수직 방향으로 합침
두 SELECT의 컬럼 개수와 순서, 타입이 같아야 함
중복 제거 기능이 있음 → 기본은 중복 제거 (UNION)
중복도 허용하고 싶다면 → UNION ALL 사용

  1. A지역, B지역 주문 데이터 한 번에 보기
SELECT order_id, region 
FROM orders 
WHERE region = 'A'
UNION
SELECT order_id, region 
FROM orders 
WHERE region = 'B';
  1. 중복 포함하고 싶다면
SELECT product_name 
FROM product_sales_2023
UNION ALL
SELECT product_name 
FROM product_sales_2024;

0개의 댓글